Description
Action qui se déclenche pendant le traitement de la saisie du formulaire, une fois que la validation initiale du champ a été effectuée.
Paramètres
- $fields
- tableau Valeurs/propriétés des champs d'entrée assainis.
- Entrée
- array Original $_POST global.
- $form_data
- tableau Paramètres/données du formulaire.
Source
wpforms/includes/class-process.php
Plus d'informations
Le wpforms_process
se déclenche vers la fin du traitement de la saisie du formulaire. Elle s'exécute après que tous les champs initiaux du formulaire ont été validés et assainis.
Ce crochet doit être utilisé lorsque l'action doit potentiellement renvoyer une erreur et interrompre le traitement du formulaire (voir les exemples ci-dessous pour plus de détails).
Exemples : vérifier l'existence d'un compte utilisateur ou valider les données d'une passerelle de paiement.
N'oubliez pas que le traitement du formulaire peut toujours être interrompu/empêché après le déclenchement de ce crochet, par d'autres codes utilisant le même crochet.
Voir la note ci-dessous à propos d'un autre crochet similaire qui se déclenche une fois que toutes les validations sont passées.
Remarque importante : si vous effectuez un traitement et que vous n'avez pas besoin de validation ou que vous avez besoin de l'identifiant de l'entrée, voir wpforms_process_complete.
Exemples
Dans l'exemple de code, vous verrez que nous vérifions d'abord l'ID du formulaire pour nous assurer qu'il correspond au formulaire ciblé. Ensuite, nous vérifions un champ spécifique (par l'ID du champ) pour voir s'il est vide.
N'oubliez pas de changer l'ID du formulaire de 5
pour qu'il corresponde à l'ID de votre formulaire et modifiez le '4'
pour qu'il corresponde à l'identifiant de votre champ.
/** * Action that fires during form entry processing after initial field validation. * * @link https://wpforms.com/developers/wpforms_process/ * * @param array $fields Sanitized entry field. values/properties. * @param array $entry Original $_POST global. * @param array $form_data Form data and settings. */ function wpf_dev_process( $fields, $entry, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #5. if ( absint( $form_data[ 'id' ] ) !== 5 ) { return $fields; } // check the field ID 4 to see if it's empty and if it is, run the error if(empty( $fields[4][ 'value' ]) ) { // Add to global errors. This will stop form entry from being saved to the database. // Uncomment the line below if you need to display the error above the form. // wpforms()->process->errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'Some error occurred.', 'plugin-domain' ); // Check the field ID 4 and show error message at the top of form and under the specific field wpforms()->process->errors[ $form_data[ 'id' ] ] [ '4' ] = esc_html__( 'Some error occurred.', 'plugin-domain' ); // Add additional logic (what to do if error is not displayed) } } add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
FAQ
Q : Comment puis-je cibler ceci pour deux formulaires différents ?
R : Si vous souhaitez utiliser cette fonction pour certains formulaires seulement, mais pas pour tous, il vous suffit d'utiliser le symbole "or" en PHP.
Par exemple, dans l'extrait ci-dessus, vous pouvez voir if ( absint( $form_data[ 'id' ] ) !== 5 )
cela signifie simplement que nous n'allons exécuter ce snippet que sur le formulaire ID 5. Mais que se passerait-il si nous avions plusieurs formulaires différents à utiliser ?
Il existe plusieurs options, que nous allons examiner ci-dessous.
1) Utilisation de fonctions multiples
Si vous souhaitez simplement dupliquer la fonction, donnez-lui un nouveau nom et mettez à jour le numéro d'identification du formulaire. Vous devez copier et coller l'ensemble de la fonction, puis modifier ce nom wpf_dev_process
à quelque chose d'unique au début et à la fin de la fonction. Ce n'est pas la méthode la plus propre, car elle ajoute de nombreuses lignes supplémentaires à votre fichier de fonctions, mais elle est plus facile à lire et reste efficace.
2) Ajout des ID de formulaires supplémentaires
La méthode la plus simple consiste à utiliser l'instruction PHP or
et ajouter les numéros d'identification supplémentaires. Le symbole PHP pour ou est ||and formulaire ID 7, vous devez if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7)
.
Articles de référence
- Comment valider un champ d'URL de média social dans votre formulaire ?
- Comment restreindre les nombres dans un champ de texte à ligne unique ?
- Comment ajouter une restriction d'âge au champ de formulaire Datepicker ?
- Comment comparer deux dates dans le même formulaire
- Comment ajouter la validation du code postal dans vos formulaires
- Comment effectuer des comparaisons de champs dans vos WPForms
- Comment ajouter la validation du champ d'adresse pour Authorize.net