Descripción

La acción wpforms_process_validate_text activa la validación en el campo de formulario Texto de una sola línea cuando se envía el formulario.

Parámetros

$field_id
(int) ID del campo.
$field_submit
(array) Valor original sin procesar/sanitizar del campo enviado.
$form_data
(array) Configuración/datos del formulario procesados, preparados para ser utilizados más adelante.

Origen

wpforms/includes/fields/class-base.php

Más Información

La acción se aplica a una matriz para el campo de formulario Texto de una sola línea. Esta función se puede utilizar para todos los campos del formulario do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ).

Por ejemplo, para usar esto en un campo de Correo electrónico, usaría do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ).

Es importante tener en cuenta que los valores de los campos no se limpian hasta más adelante en el procesamiento, en wpforms_process_format_{$field_type}.

Para mayor seguridad, se recomienda encarecidamente utilizar la validación del lado del servidor en lugar de depender únicamente de JavaScript. Puede utilizar el hook wpforms_process_validate_{$field_type} para validar diferentes tipos de campos. Por ejemplo, utilice wpforms_process_validate_email para un campo de correo electrónico. Asegúrese de aplicar su validación antes del hook wpforms_process_validate_{$field_type}, ya que es cuando los datos se limpian.

Ejemplos

Puede utilizar esta acción para escanear el Texto de una sola línea en busca de cualquier cosa que desee validar antes de enviar el formulario.

En este ejemplo, vamos a buscar cualquier lenguaje inapropiado en este campo. Si hay algún lenguaje inapropiado, el formulario mostrará un error y no se enviará.

/*
 * 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 );

Artículos de Referencia