Description

L'action wpforms_process_validate_text déclenche la validation du champ de formulaire Texte sur une seule ligne lors de la soumission du formulaire.

Paramètres

$field_id
(int) ID du champ.
$field_submit
(array) Valeur brute/non assainie d'origine soumise pour le champ.
$form_data
(array) Paramètres/données du formulaire traités, préparés pour une utilisation ultérieure.

Source

wpforms/includes/fields/class-base.php

Plus d'informations

L'action est appliquée à un tableau pour le champ de formulaire Texte sur une seule ligne. Cette fonction peut être utilisée pour tous les champs de formulaire do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ).

Par exemple, pour l'utiliser pour un champ Email, vous utiliseriez do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ).

Il est important de noter que les valeurs des champs ne sont pas assainies avant plus tard dans le processus, à wpforms_process_validate_{$field_type}.

Pour une meilleure sécurité, il est fortement recommandé d'utiliser la validation côté serveur au lieu de se fier uniquement à JavaScript. Vous pouvez utiliser le hook wpforms_process_validate_{$field_type} pour valider différents types de champs. Par exemple, utilisez wpforms_process_validate_email pour un champ Email. Assurez-vous d'appliquer votre validation avant le hook wpforms_process_validate_{$field_type}, car c'est à ce moment-là que les données sont assainies.

Exemples

Vous pouvez utiliser cette action pour analyser le Texte sur une seule ligne pour tout ce que vous souhaitez faire valider avant l'envoi du formulaire.

Dans cet exemple, nous allons rechercher toute grossièreté dans ce champ. S'il y a une grossièreté, le formulaire affichera une erreur et ne sera pas envoyé.

/*
 * 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 );

Articles de référence