Beschreibung

Die wpforms_process_validate_text Aktion löst die Validierung für das Formularfeld Single Line Text aus, wenn das Formular gesendet wird.

Parameter

$field_id
(int) Feld-ID.
$field_submit
(array) Ursprünglicher, unbereinigter Feldwert, der für das Feld übermittelt wurde.
$form_data
(array) Verarbeitete Formulareinstellungen/Daten, die zur späteren Verwendung vorbereitet sind.

Quelle

wpforms/includes/fields/class-base.php

Weitere Informationen

Die Aktion wird auf ein Array für das Formularfeld Single Line Text angewendet. Diese Funktion kann für alle Formularfelder verwendet werden do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ).

Um dies beispielsweise für ein E-Mail-Feld zu verwenden, würden Sie do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ) verwenden.

Es ist wichtig zu beachten, dass Feldwerte erst später in der Verarbeitung unter wpforms_process_format_{$field_type} bereinigt werden.

Für bessere Sicherheit wird dringend empfohlen, serverseitige Validierung zu verwenden, anstatt sich ausschließlich auf JavaScript zu verlassen. Sie können den wpforms_process_validate_{$field_type} Hook verwenden, um verschiedene Feldtypen zu validieren. Verwenden Sie zum Beispiel wpforms_process_validate_email für ein E-Mail-Feld. Stellen Sie sicher, dass Sie Ihre Validierung vor dem wpforms_process_validate_{$field_type} Hook anwenden, da die Daten dann bereinigt werden.

Beispiele

Sie können diese Aktion verwenden, um den Single Line Text auf alles zu überprüfen, was vor dem Senden des Formulars validiert werden soll.

In diesem Beispiel suchen wir nach anstößiger Sprache in diesem Feld. Wenn anstößige Sprache vorhanden ist, zeigt das Formular einen Fehler an und wird nicht gesendet.

/*
 * Check the single line text field for profanity.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_text/
 *
 * @param int     $field_id        Field ID.
 * @param array   $field_submit    Unsanitized field value submitted for the field.
 * @param array   $form_data       Form data and settings.
*/

function wpf_dev_profanity_filter_single_text( $field_id, $field_submit, $form_data ) {

    // Optional, you can limit to specific forms. Below, we restrict output to
    // form ID #1423.
    if ( absint( $form_data[ 'id' ] ) !== 1423 ) {
        return;
    }

    //Create your list of profanity words separated by commas
    $blocked_words = array( 
        'badword1', 
        'badword2'
    );
 
    foreach( $blocked_words as $word ) {
        if(strpos($field_submit, $word) !== FALSE ) {
            wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'No profanity allowed.', 'wpforms' );
            return;
        }
    }
 
}
 
add_action( 'wpforms_process_validate_text', 'wpf_dev_profanity_filter_single_text', 10, 3 );

Referenzartikel