Descripción

La acción wpforms_process_validate_number-slider dispara la validación en el campo Number Slider cuando se envía el formulario, antes de que se sanee cualquier valor del campo.

parámetrotipodescripción
$field_idstring|intID del campo como una cadena numérica.
$field_submitmixedValor del campo enviado (datos sin procesar). El valor del deslizador tal como se envió, antes de que el campo lo convierta a float.
$form_datamatrizDatos del formulario.

Más Información

La acción se dispara dentro de WPForms_Process::process(). Después de que se ejecutan los ganchos wpforms_process_before, el método recorre cada campo en $form_data['fields'] y dispara esta acción una vez por campo con el valor sin procesar de $_POST. El archivo se encuentra en includes/, por lo que el gancho se dispara tanto en Lite como en Pro. La clase del campo Number Slider también se incluye en ambos (includes/fields/class-number-slider.php).

Este gancho es una instancia de do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). El nombre del gancho mantiene el guion del tipo de campo. La misma llamada dispara wpforms_process_validate_email para el campo Email y wpforms_process_validate_name para el campo Name.

La validación propia del campo se ejecuta en esta misma acción. WPForms_Field::__construct() añade el método validate() de cada campo en la prioridad 10 con tres argumentos. Para el Number Slider, ese método convierte el valor a float, aplica la configuración Required (un valor de 0 cuenta como rellenado) y establece el mensaje wpforms_valid_number_label cuando el valor no es numérico.

Para rechazar un envío, escribe un mensaje en wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Cualquier error establecido durante este bucle detiene el procesamiento antes de que se guarde la entrada. Esto solo se ejecuta en el envío final. En un formulario de varias páginas, no impide que el usuario se mueva entre páginas.

Origen

wpforms/includes/class-process.php

Ejemplo

Rechaza un envío de Number Slider cuando el valor seleccionado es 0, por lo que el usuario tiene que mover el deslizador antes de que el formulario se procese.

/**
 * Require a Number Slider value other than 0.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_number-slider/
 *
 * @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_validate_number_slider( $field_id, $field_submit, $form_data ) {

    // Only run on the form with ID 143 and the Number Slider field with ID 1. Remember to change both IDs to match your form.
    if ( absint( $form_data['id'] ) !== 143 || absint( $field_id ) !== 1 ) {
        return;
    }

    if ( (float) $field_submit === 0.0 ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'Please select a number that is not 0.', 'wpforms' );
    }
}
add_action( 'wpforms_process_validate_number-slider', 'wpf_dev_validate_number_slider', 10, 3 );

Artículo de referencia