Beschreibung

Die wpforms_process_validate_text Aktion löst die Validierung der Einzeiliger Text Formularfeld, wenn das Formular abgeschickt wird.

Parameter

$feld_id
(int) Feld-ID.
$field_submit
(array) Ursprünglicher roher/unsanierter Feldwert, der für das Feld übermittelt wurde.
$form_data
(Array) Verarbeitete Formulareinstellungen/Daten, die für die spätere Verwendung vorbereitet sind.

Quelle

wpforms/includes/fields/class-base.php

Mehr Informationen

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

Zum Beispiel, um dies für eine E-Mail Feld, würden Sie verwenden do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ).

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

Beispiele

Mit dieser Aktion können Sie den einzeiligen Text auf alles prüfen, was Sie vor dem Absenden des Formulars validieren lassen möchten.

In diesem Beispiel werden wir nach Schimpfwörtern in diesem Feld suchen. Wenn es ein Schimpfwort gibt, wird das Formular einen Fehler anzeigen und 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