KI-Zusammenfassung
Beschreibung
Die Aktion wpforms_process_validate_name löst die Validierung für das Name-Feld aus, wenn das Formular gesendet wird, bevor ein Feldwert bereinigt wird.
| Parameter | typ | beschreibung |
|---|---|---|
$field_id | string|int | Feld-ID als numerischer String. |
$field_submit | mixed | Eingereichter Feldwert (Rohdaten). Ein String, wenn das Feldformat Einfach ist, oder ein Array mit den Schlüsseln Vorname, Mitte und Nachname für die Formate Vorname Nachname und Vorname Mitte Nachname. |
$form_data | Array | Formulardaten. |
Weitere Informationen
Die Aktion wird innerhalb von WPForms_Process::process() ausgelöst. Nachdem die wpforms_process_before Hooks ausgeführt wurden, durchläuft die Methode jedes Feld in $form_data['fields'] und löst diese Aktion einmal pro Feld mit dem Rohwert von $_POST aus. Die Datei befindet sich in includes/, daher wird der Hook sowohl in Lite als auch in Pro ausgelöst.
Dieser Hook ist eine Instanz von do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). Derselbe Aufruf löst wpforms_process_validate_email für das E-Mail-Feld und wpforms_process_validate_text für das Einzeiliges Textfeld aus.
Die eigene Validierung des Namensfelds läuft über dieselbe Aktion. WPForms_Field::__construct() in includes/fields/class-base.php fügt die validate()-Methode jedes Felds mit Priorität 10 und drei Argumenten hinzu. Für das Namensfeld erzwingt diese Methode nur die Einstellung Erforderlich: ein nicht leerer String für das einfache Format oder nicht leere Werte für Vor- und Nachname für die anderen Formate. Andere Prüfungen sind Ihre Aufgabe.
Um eine Einreichung abzulehnen, schreiben Sie eine Nachricht an wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Jeder Fehler, der während dieser Schleife gesetzt wird, stoppt die Verarbeitung, bevor der Eintrag gespeichert wird. Werte werden erst bereinigt, wenn wpforms_process_format_{$field_type} später ausgeführt wird. Behandeln Sie daher $field_submit als nicht vertrauenswürdige Eingabe.
Quelle
wpforms/includes/class-process.php
Beispiel
Blockiert eine Liste von Namen von der Einreichung eines Formulars. Sie verarbeitet sowohl das einfache Format (ein String) als auch die Formate Vorname Nachname (ein Array) und zeigt den Fehler auf dem Feld an.
/**
* Block specific names from submitting the form.
*
* @link https://wpforms.com/developers/wpforms_process_validate_name/
*
* @param string|int $field_id Field ID as a numeric string.
* @param mixed $field_submit Submitted field value (raw data).
* @param array $form_data Form data.
*/
function wpf_dev_block_name_validation( $field_id, $field_submit, $form_data ) {
// Only run on the form with ID 143 and the Name field with ID 10. Remember to change both IDs to match your form.
if ( absint( $form_data['id'] ) !== 143 || absint( $field_id ) !== 10 ) {
return;
}
// The Simple format submits a string. First Last and First Middle Last submit an array.
if ( is_array( $field_submit ) ) {
$submitted_name = implode( ' ', array_filter( [ $field_submit['first'] ?? '', $field_submit['middle'] ?? '', $field_submit['last'] ?? '' ] ) );
} else {
$submitted_name = (string) $field_submit;
}
// Add the names to block.
$blocked_names = [
'John Doe',
'Jane Doe',
];
foreach ( $blocked_names as $name ) {
if ( preg_match( '/\b' . preg_quote( $name, '/' ) . '\b/i', $submitted_name ) ) {
wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'This name cannot be used to submit the form.', 'wpforms' );
return;
}
}
}
add_action( 'wpforms_process_validate_name', 'wpf_dev_block_name_validation', 10, 3 );




