Résumé IA
Description
L'action wpforms_process_validate_name déclenche la validation du champ Nom lors de la soumission du formulaire, avant que toute valeur de champ ne soit assainie.
| paramètre | type | description |
|---|---|---|
$field_id | string|int | ID du champ sous forme de chaîne numérique. |
$field_submit | mixed | Valeur du champ soumis (données brutes). Une chaîne de caractères lorsque le format du champ est Simple, ou un tableau avec les clés first, middle et last pour les formats First Last et First Middle Last. |
$form_data | tableau | Données du formulaire. |
Plus d'informations
L'action se déclenche à l'intérieur de WPForms_Process::process(). Après l'exécution des hooks wpforms_process_before, la méthode parcourt chaque champ dans $form_data['fields'] et déclenche cette action une fois par champ avec la valeur brute de $_POST. Le fichier se trouve dans includes/, donc le hook se déclenche en Lite et en Pro.
Ce hook est une instance de do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). Le même appel déclenche wpforms_process_validate_email pour le champ Email et wpforms_process_validate_text pour le champ Texte sur une seule ligne.
La validation propre au champ Nom s'exécute sur cette même action. WPForms_Field::__construct() dans includes/fields/class-base.php ajoute la méthode validate() de chaque champ à la priorité 10 avec trois arguments. Pour le champ Nom, cette méthode applique uniquement le paramètre Requis : une chaîne non vide pour le format Simple, ou des valeurs first et last non vides pour les autres formats. D'autres vérifications sont à ajouter par vos soins.
Pour rejeter une soumission, écrivez un message dans wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Toute erreur définie pendant cette boucle arrête le traitement avant que l'entrée ne soit enregistrée. Les valeurs ne sont pas assainies avant l'exécution de wpforms_process_format_{$field_type} plus tard, alors considérez $field_submit comme une entrée non fiable.
Source
wpforms/includes/class-process.php
Exemple
Bloque une liste de noms de la soumission d'un formulaire. Il gère à la fois le format Simple (une chaîne) et les formats First Last (un tableau) et affiche l'erreur sur le champ.
/**
* 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 );




