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