Descrição

A ação wpforms_process_validate_name executa a validação no campo Nome quando o formulário é enviado, antes que qualquer valor de campo seja sanitizado.

parâmetrotipodescrição
$field_idstring|intID do campo como uma string numérica.
$field_submitmistoValor do campo enviado (dados brutos). Uma string quando o formato do campo é Simples, ou um array com as chaves primeiro, meio e último para os formatos Primeiro Último e Primeiro Meio Último.
$form_dataarrayDados do formulário.

Mais Informações

A ação é executada dentro de WPForms_Process::process(). Após a execução dos hooks wpforms_process_before, o método percorre cada campo em $form_data['fields'] e executa esta ação uma vez por campo com o valor bruto de $_POST. O arquivo fica em includes/, então o hook é executado tanto no Lite quanto no Pro.

Este hook é uma instância de do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). A mesma chamada executa wpforms_process_validate_email para o campo Email e wpforms_process_validate_text para o campo Texto de Linha Única.

A própria validação do campo Nome é executada nesta mesma ação. WPForms_Field::__construct() em includes/fields/class-base.php adiciona o método validate() de cada campo na prioridade 10 com três argumentos. Para o campo Nome, esse método apenas aplica a configuração Obrigatório: uma string não vazia para o formato Simples, ou valores primeiro e último não vazios para os outros formatos. Outras verificações são para você adicionar.

Para rejeitar um envio, escreva uma mensagem para wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Qualquer erro definido durante este loop para o processamento antes que a entrada seja salva. Os valores não são sanitizados até que wpforms_process_format_{$field_type} seja executado posteriormente, então trate $field_submit como entrada não confiável.

Fonte

wpforms/includes/class-process.php

Exemplo

Bloqueia uma lista de nomes de enviar um formulário. Ele lida com o formato Simples (uma string) e os formatos Primeiro Último (um array) e exibe o erro no 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 );

Artigo de Referência