Descripción

La acción wpforms_process_validate_payment-checkbox se dispara para cada campo de pago de Casilla de verificación mientras WPForms valida un formulario enviado, antes de que se formatee cualquier valor de campo y antes de que se guarde la entrada.

Esta acción está disponible desde WPForms 1.4.0.

parámetrotipodescripción
$field_idstring|intID del campo como una cadena numérica.
$field_submitmixedValor del campo enviado (datos sin procesar). Para este campo, es la matriz de IDs de opciones marcadas de la solicitud, o una cadena vacía cuando no se envió nada para el campo.
$form_datamatrizDatos y configuración del formulario.

Más Información

WPForms_Process::process() itera sobre cada campo en $form_data['fields'] y llama a do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $this->form_data ) para cada uno. Este hook es la instancia para el tipo de campo payment-checkbox. Se dispara en cada envío de un formulario que contiene el campo, ya sea que el visitante lo haya completado o no. El archivo se encuentra en includes/, por lo que se dispara en Lite y Pro.

Este hook es una instancia de do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). Otras instancias son wpforms_process_validate_payment-single para el campo Artículo único y wpforms_process_validate_checkbox para el campo estándar Casillas de verificación.

La clase de campo registra su propio método validate() en este hook con prioridad 10 y tres argumentos. Esa devolución de llamada agrega el error de campo requerido, rechaza los IDs de opción que no existen en la configuración del campo y aplica el límite de opciones del campo. Una devolución de llamada agregada más tarde con la misma prioridad se ejecuta después de ella y sobrescribe la misma ranura de error.

Para rechazar el envío, escriba un mensaje en wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Después del bucle, el filtro wpforms_process_initial_errors se ejecuta sobre los errores recopilados; la Lógica condicional lo utiliza para descartar errores de campos ocultos. Los valores no se sanitizan en este punto. La sanitización ocurre más tarde en wpforms_process_format_{$field_type}.

Origen

wpforms/includes/class-process.php

Ejemplo

Requerir entre dos y cinco elementos marcados en un campo de Elementos de casilla de verificación en un formulario, y detener el envío con un error debajo del campo cuando el recuento está fuera de ese rango.

/**
 * Require between two and five checked items in a Checkbox Items field.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_payment-checkbox/
 *
 * @param string|int $field_id     Field ID.
 * @param mixed      $field_submit Submitted field value (raw data).
 * @param array      $form_data    Form data and settings.
 */
function wpf_dev_process_validate_payment_checkbox( $field_id, $field_submit, $form_data ) {

    // Only run on my form with ID = 143, remember to change this to match your form ID.
    if ( absint( $form_data['id'] ) !== 143 ) {
        return;
    }

    // Only run on the Checkbox Items field with ID = 21, remember to change this to match your field ID.
    if ( absint( $field_id ) !== 21 ) {
        return;
    }

    $min   = 2;
    $max   = 5;
    $count = is_array( $field_submit ) ? count( $field_submit ) : 0;

    if ( $count < $min ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %d - minimum number of choices. */
            esc_html__( 'Please select a minimum of %d choices.', 'wpforms' ),
            $min
        );

        return;
    }

    if ( $count > $max ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %d - maximum number of choices. */
            esc_html__( 'Please select a maximum of %d choices.', 'wpforms' ),
            $max
        );
    }
}
add_action( 'wpforms_process_validate_payment-checkbox', 'wpf_dev_process_validate_payment_checkbox', 10, 3 );

Artículo de referencia