Riassunto AI
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.
| parametro | tipo | descrizione |
|---|---|---|
$field_id | string|int | ID del campo come stringa numerica. |
$field_submit | mixed | Valore 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_data | array | Dati 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 );




