Descrição

O wpforms_process_validate_text dispara a validação na ação Texto de linha única campo do formulário quando o formulário é enviado.

Parâmetros

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

Fonte

wpforms/includes/fields/class-base.php

Mais informações

A ação é aplicada a uma matriz para Texto de linha única campo de formulário. Essa 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 isso em um E-mail o campo, você usaria do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ).

É importante observar que os valores de campo não são higienizados até o final do processamento, em wpforms_process_format_{$field_type}.

Para aumentar a segurança, é altamente recomendável usar a validação do lado do servidor em vez de confiar apenas no JavaScript. Você pode usar a tag wpforms_process_validate_{$field_type} para validar diferentes tipos de campo. Por exemplo, use wpforms_process_validate_email para um campo Email. Certifique-se de aplicar sua validação antes de o wpforms_process_format_{$field_type} pois é nesse momento que os dados são higienizados.

Exemplos

Você pode usar essa ação para verificar se há algo no Single Line Text que você gostaria que fosse validado antes de enviar o formulário.

Neste exemplo, vamos procurar por qualquer profanação nesse campo. Se houver algum palavrão, o formulário exibirá um erro e não será enviado.

/*
 * Check the single line text field for profanity.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_text/
 *
 * @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.
*/

function wpf_dev_profanity_filter_single_text( $field_id, $field_submit, $form_data ) {

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

    //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_text', 'wpf_dev_profanity_filter_single_text', 10, 3 );

Artigos de referência