Descrição

A ação wpforms_process_validate_textarea executa a validação no campo de formulário Texto de Parágrafo quando o formulário é enviado.

Parâmetros

$field_id
(int) ID do campo.
$field_submit
(array) Valor original não sanitizado submetido para o campo.
$form_data
(array) Configurações/dados do formulário processados, preparados para serem usados posteriormente.

Origem

wpforms/includes/fields/class-base.php

Mais Informações

A ação wpforms_process_validate_textarea é aplicada a um array para o campo de formulário Texto de Parágrafo. Esta função pode ser usada para todos os campos de formulário do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ).

Por exemplo, para usar isto para um campo de Email, usaria do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ).

É importante notar que os valores dos campos não são sanitizados até mais tarde no processamento, em wpforms_process_format_{$field_type}.

Exemplos

Pode usar esta ação para verificar o Texto de Parágrafo em busca de uma lista de palavras que gostaria de impedir que o formulário envie, como linguagem imprópria, ou pode usar esta ação para procurar certas palavras que acionariam outra ação, como definir um valor num campo oculto no seu formulário que pode filtrar das entradas.

Neste exemplo, vamos procurar por qualquer profanidade neste campo. Se houver alguma profanidade, o formulário exibirá um erro e não enviará.

/*
 * Check the paragraph text field for profanity.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_textarea/
 *
 * @param int     $field_id        Field ID.
 * @param array   $field_submit    Unsanitized field value submitted for the field.
 * @param array   $form_data       Form data and settings.
*/

    // Optional, you can limit to specific forms. Below, we restrict output to
    // form ID #1423.
    if ( absint( $form_data[ 'id' ] ) !== 1423 ) {
        return;
    }

function wpf_dev_profanity_filter_paragraph( $field_id, $field_submit, $form_data ) {
    //Create your list of profanity words separated by commas
    $blocked_words = array( 
        'badword1', 
        'badword2'
    );
 
    foreach( $blocked_words as $word ) {
        if(strpos($field_submit, $word) !== FALSE ) {
            wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'No profanity allowed.', 'wpforms' );
            return;
        }
    }
 
}
 
add_action( 'wpforms_process_validate_textarea', 'wpf_dev_profanity_filter_paragraph', 10, 3 );

Referências do Artigo: