Résumé IA
Description
Action qui se déclenche pendant le traitement d'une entrée de formulaire, après que la validation initiale des champs a réussi.
Paramètres
- $fields
- array Valeurs/propriétés des champs d'entrée nettoyées.
- $entry
- array Globale $_POST originale.
- $form_data
- array Paramètres/données du formulaire.
Source
wpforms/includes/class-process.php
Plus d'informations
L'action wpforms_process se déclenche vers la fin du traitement d'une entrée de formulaire. Elle s'exécute après que tous les champs initiaux du formulaire ont été validés et nettoyés.
Ce hook doit être utilisé lorsque l'action a potentiellement besoin de retourner une erreur et d'arrêter le traitement du formulaire (voir les Exemples ci-dessous pour plus de détails).
Exemples : vérifier si un compte utilisateur existe ou valider les données pour une passerelle de paiement.
N'oubliez pas que le traitement du formulaire peut toujours être arrêté/empêché après le déclenchement de ce hook, par d'autres codes utilisant le même hook.
Voir la note ci-dessous concernant un autre hook similaire qui se déclenche après que toutes les validations sont passées.
Note importante : Si vous effectuez un traitement et n'avez pas besoin de validation ou de l'ID d'entrée, consultez 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 son ID) pour voir s'il est vide.
N'oubliez pas de changer l'ID du formulaire de 5 pour qu'il corresponde à votre ID de formulaire et de changer le '4' pour qu'il corresponde à votre ID de 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 cela pour deux formulaires différents ?
R : Si vous souhaitez utiliser cette fonction pour seulement certains formulaires mais pas tous, vous devez simplement utiliser le symbole en PHP qui signifie « ou ».
Par exemple, dans l'extrait ci-dessus, vous pouvez voir if ( absint( $form_data[ 'id' ] ) !== 5 ), cela signifie simplement que nous allons exécuter cet extrait uniquement sur le formulaire ID 5. Mais que faire si nous avions quelques formulaires différents sur lesquels nous voulions que cela s'exécute ?
Il y a quelques options, examinons chaque option ci-dessous.
1) Utilisation de fonctions multiples
Si vous vouliez simplement dupliquer la fonction, donnez un nouveau nom à la fonction et mettez à jour le numéro de l'ID du formulaire. Vous copieriez et colleriez la fonction entière, puis changeriez ce nom wpf_dev_process pour 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 ajoutera de nombreuses lignes supplémentaires à votre fichier de fonctions, mais elle est plus facile à lire et reste efficace.
2) Ajout des ID de formulaire supplémentaires
Le moyen le plus simple est d'utiliser simplement l'instruction PHP or et d'ajouter les numéros d'ID supplémentaires. Le symbole PHP pour ou est ||et l'ID de formulaire 7, vous auriez if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7).
Articles de référence
- Comment valider un champ d'URL de réseau social dans votre formulaire
- Comment restreindre les nombres dans un champ de formulaire de texte sur une seule ligne
- Comment fournir une restriction d'âge sur le champ de formulaire Datepicker
- Comment comparer deux dates dans le même formulaire
- Comment ajouter la validation du champ code postal à vos formulaires
- Comment effectuer des comparaisons de champs dans votre WPForms
- Comment ajouter la validation du champ d'adresse pour Authorize.net