Descrizione

L'azione wpforms_process_validate_name esegue la validazione sul campo Nome quando il modulo viene inviato, prima che qualsiasi valore del campo venga sanificato.

parametrotipodescrizione
$field_idstring|intID del campo come stringa numerica.
$field_submitmixedValore del campo inviato (dati grezzi). Una stringa quando il formato del campo è Semplice, o un array con le chiavi first, middle e last per i formati Primo Ultimo e Primo Secondo Ultimo.
$form_dataarrayDati del modulo.

Maggiori Informazioni

L'azione viene eseguita all'interno di WPForms_Process::process(). Dopo l'esecuzione degli hook wpforms_process_before, il metodo scorre ogni campo in $form_data['fields'] ed esegue questa azione una volta per campo con il valore grezzo da $_POST. Il file si trova in includes/, quindi l'hook viene eseguito sia in Lite che in Pro.

Questo hook è un'istanza di do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). La stessa chiamata esegue wpforms_process_validate_email per il campo Email e wpforms_process_validate_text per il campo Testo a riga singola.

La validazione del campo Nome viene eseguita sulla stessa azione. WPForms_Field::__construct() in includes/fields/class-base.php aggiunge il metodo validate() di ciascun campo alla priorità 10 con tre argomenti. Per il campo Nome, tale metodo applica solo l'impostazione Richiesto: una stringa non vuota per il formato Semplice, o valori first e last non vuoti per gli altri formati. Altri controlli sono da aggiungere da parte tua.

Per rifiutare un invio, scrivi un messaggio in wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Qualsiasi errore impostato durante questo ciclo interrompe l'elaborazione prima che la voce venga salvata. I valori non vengono sanificati fino a quando non viene eseguita wpforms_process_format_{$field_type} in seguito, quindi considera $field_submit come input non attendibile.

Origine

wpforms/includes/class-process.php

Esempio

Blocca un elenco di nomi dall'invio di un modulo. Gestisce sia il formato Semplice (una stringa) sia i formati Primo Ultimo (un array) e mostra l'errore sul campo.

/**
 * Block specific names from submitting the form.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_name/
 *
 * @param string|int $field_id     Field ID as a numeric string.
 * @param mixed      $field_submit Submitted field value (raw data).
 * @param array      $form_data    Form data.
 */
function wpf_dev_block_name_validation( $field_id, $field_submit, $form_data ) {

    // Only run on the form with ID 143 and the Name field with ID 10. Remember to change both IDs to match your form.
    if ( absint( $form_data['id'] ) !== 143 || absint( $field_id ) !== 10 ) {
        return;
    }

    // The Simple format submits a string. First Last and First Middle Last submit an array.
    if ( is_array( $field_submit ) ) {
        $submitted_name = implode( ' ', array_filter( [ $field_submit['first'] ?? '', $field_submit['middle'] ?? '', $field_submit['last'] ?? '' ] ) );
    } else {
        $submitted_name = (string) $field_submit;
    }

    // Add the names to block.
    $blocked_names = [
        'John Doe',
        'Jane Doe',
    ];

    foreach ( $blocked_names as $name ) {
        if ( preg_match( '/\b' . preg_quote( $name, '/' ) . '\b/i', $submitted_name ) ) {
            wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'This name cannot be used to submit the form.', 'wpforms' );
            return;
        }
    }
}
add_action( 'wpforms_process_validate_name', 'wpf_dev_block_name_validation', 10, 3 );

Articolo di riferimento