Description

L'action wpforms_process_validate_payment-single se déclenche pour chaque champ de paiement d'article unique pendant que WPForms valide un formulaire soumis, avant que la valeur de tout champ ne soit formatée et avant que l'entrée ne soit enregistrée.

paramètretypedescription
$field_idstring|intID du champ sous forme de chaîne numérique.
$field_submitmixedValeur du champ soumis (données brutes). Pour ce champ, il s'agit de la chaîne de montant de la requête, ou d'une chaîne vide lorsque rien n'a été publié pour le champ.
$form_datatableauDonnées et paramètres du formulaire.

Plus d'informations

WPForms_Process::process() parcourt chaque champ dans $form_data['fields'] et appelle do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $this->form_data ) pour chacun. Ce hook est l'instance pour le type de champ payment-single. Il se déclenche à chaque soumission d'un formulaire contenant le champ, que le visiteur l'ait rempli ou non. Le fichier se trouve dans includes/, il se déclenche donc dans Lite et Pro.

Ce hook est une instance de do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). D'autres instances sont wpforms_process_validate_payment-checkbox pour le champ Articles de case à cocher et wpforms_process_validate_email pour le champ E-mail.

La classe de champ enregistre son propre validate() sur ce hook à la priorité 10 avec trois arguments. Elle ajoute l'erreur de champ obligatoire. Ensuite, à moins que le filtre wpforms_forms_fields_payment_single_field_validate_amount ne retourne false, elle vérifie le montant : un article à prix fixe doit publier un montant égal au prix configuré, et un article défini par l'utilisateur ne peut pas publier un montant négatif ou un montant inférieur au paramètre Prix minimum du champ.

$field_submit est la chaîne brute publiée. Exécutez-la via wpforms_sanitize_amount() avant de la comparer en tant que nombre. Pour rejeter la soumission, écrivez un message dans wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Le filtre wpforms_process_initial_errors s'exécute sur les erreurs collectées après la boucle ; la logique conditionnelle l'utilise pour supprimer les erreurs des champs masqués.

Source

wpforms/includes/class-process.php

Exemple

Appliquer un montant minimum à un champ d'article unique défini par l'utilisateur qui porte la classe CSS set-minimum, et arrêter la soumission avec une erreur sous le champ lorsque le montant est inférieur.

/**
 * Enforce a minimum amount on a User Defined Single Item field.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_payment-single/
 *
 * @param string|int $field_id     Field ID.
 * @param mixed      $field_submit Submitted field value (raw data).
 * @param array      $form_data    Form data and settings.
 */
function wpf_dev_process_validate_payment_single( $field_id, $field_submit, $form_data ) {

    // Only run on my form with ID = 143, remember to change this to match your form ID.
    if ( absint( $form_data['id'] ) !== 143 ) {
        return;
    }

    // Only run on fields that have the CSS class "set-minimum" in the field's Advanced tab.
    $classes = explode( ' ', $form_data['fields'][ $field_id ]['css'] ?? '' );

    if ( ! in_array( 'set-minimum', $classes, true ) ) {
        return;
    }

    $minimum_amount = 5;

    if ( (float) wpforms_sanitize_amount( $field_submit ) < $minimum_amount ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %s - minimum amount. */
            esc_html__( 'Minimum amount is %s.', 'wpforms' ),
            wpforms_format_amount( $minimum_amount, true )
        );
    }
}
add_action( 'wpforms_process_validate_payment-single', 'wpf_dev_process_validate_payment_single', 10, 3 );

Article de référence