Descrizione

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

Questa azione è disponibile da WPForms 1.4.0.

parametrotipodescrizione
$field_idstring|intID del campo come stringa numerica.
$field_submitmixedValore del campo inviato (dati grezzi). Per questo campo è l'array degli ID delle scelte selezionate dalla richiesta, o una stringa vuota quando nulla è stato inviato per il campo.
$form_dataarrayDati e impostazioni del modulo.

Maggiori Informazioni

WPForms_Process::process() scorre ogni campo in $form_data['fields'] e chiama do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $this->form_data ) per ognuno. Questo hook è l'istanza per il tipo di campo payment-checkbox. 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-single per il campo Single Item e wpforms_process_validate_checkbox per il campo standard Checkboxes.

La classe del campo registra il proprio metodo validate() su questo hook con priorità 10 e tre argomenti. Tale callback aggiunge l'errore di campo obbligatorio, rifiuta gli ID delle scelte che non esistono nelle impostazioni del campo e applica il limite di scelte del campo. Una callback aggiunta successivamente con la stessa priorità viene eseguita dopo di essa e sovrascrive lo stesso slot di errore.

Per rifiutare l'invio, scrivi un messaggio in wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Dopo il ciclo, il filtro wpforms_process_initial_errors viene eseguito sugli errori raccolti; la Logica Condizionale lo utilizza per scartare gli errori dai campi nascosti. I valori non vengono sanificati in questo momento. La sanificazione avviene successivamente in wpforms_process_format_{$field_type}.

Origine

wpforms/includes/class-process.php

Esempio

Richiedi tra due e cinque elementi selezionati in un campo Checkbox Items su un modulo e interrompi l'invio con un errore sotto il campo quando il conteggio è al di fuori di quell'intervallo.

/**
 * Require between two and five checked items in a Checkbox Items field.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_payment-checkbox/
 *
 * @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_checkbox( $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 the Checkbox Items field with ID = 21, remember to change this to match your field ID.
    if ( absint( $field_id ) !== 21 ) {
        return;
    }

    $min   = 2;
    $max   = 5;
    $count = is_array( $field_submit ) ? count( $field_submit ) : 0;

    if ( $count < $min ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %d - minimum number of choices. */
            esc_html__( 'Please select a minimum of %d choices.', 'wpforms' ),
            $min
        );

        return;
    }

    if ( $count > $max ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %d - maximum number of choices. */
            esc_html__( 'Please select a maximum of %d choices.', 'wpforms' ),
            $max
        );
    }
}
add_action( 'wpforms_process_validate_payment-checkbox', 'wpf_dev_process_validate_payment_checkbox', 10, 3 );

Articolo di riferimento