Attention !

Cet article contient du code PHP et est destiné aux développeurs. Nous fournissons ce code à titre de courtoisie, mais nous n'offrons pas de support pour les personnalisations de code ou le développement tiers.

Pour obtenir de l'aide supplémentaire, veuillez consulter le tutoriel de WPBeginner sur l'ajout de code personnalisé.

Ignorer

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