Descrizione

L'azione wpforms_process_validate_payment-single viene attivata per ogni campo di pagamento Single Item mentre WPForms convalida un modulo inviato, prima che qualsiasi valore del campo venga formattato e prima che la voce venga salvata.

parametrotipodescrizione
$field_idstring|intID del campo come stringa numerica.
$field_submitmixedValore del campo inviato (dati grezzi). Per questo campo è la stringa dell'importo dalla richiesta, o una stringa vuota quando nulla è stato inviato per il campo.
$form_dataarrayDati e impostazioni del modulo.

Maggiori Informazioni

WPForms_Process::process() esamina ogni campo in $form_data['fields'] e chiama do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $this->form_data ) per ciascuno. Questo hook è l'istanza per il tipo di campo payment-single. Viene attivato ad ogni invio di un modulo che contiene il campo, indipendentemente dal fatto che il visitatore lo abbia compilato o meno. Il file si trova in includes/, quindi viene attivato sia in Lite che in Pro.

Questo hook è un'istanza di do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). Altre istanze sono wpforms_process_validate_payment-checkbox per il campo Checkbox Items e wpforms_process_validate_email per il campo Email.

La classe del campo registra il proprio validate() su questo hook con priorità 10 e tre argomenti. Aggiunge l'errore di campo obbligatorio. Quindi, a meno che il filtro wpforms_forms_fields_payment_single_field_validate_amount non restituisca false, controlla l'importo: un articolo a prezzo fisso deve inviare un importo uguale al prezzo configurato, e un articolo Definito dall'utente non può inviare un importo negativo o un importo inferiore all'impostazione Prezzo minimo del campo.

$field_submit è la stringa grezza inviata. Eseguila tramite wpforms_sanitize_amount() prima di confrontarla come numero. Per rifiutare l'invio, scrivi un messaggio in wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Il filtro wpforms_process_initial_errors viene eseguito sugli errori raccolti dopo il ciclo; la Logica Condizionale lo utilizza per scartare gli errori dai campi nascosti.

Origine

wpforms/includes/class-process.php

Esempio

Applica un importo minimo a un campo Single Item definito dall'utente che porta la classe CSS set-minimum, e interrompi l'invio con un errore sotto il campo quando l'importo è inferiore.

/**
 * 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 );

Articolo di riferimento