Descripción

La acción wpforms_process_validate_payment-single se dispara para cada campo de pago de Artículo Único mientras WPForms valida un formulario enviado, antes de que se formatee cualquier valor de campo y antes de que se guarde la entrada.

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 cadena de importe de la solicitud, o una cadena vacía cuando no se publicó nada para el campo.
$form_datamatrizDatos y configuración del formulario.

Más Información

WPForms_Process::process() recorre 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-single. 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-checkbox para el campo Elementos de Casilla de Verificación y wpforms_process_validate_email para el campo Correo Electrónico.

La clase de campo registra su propio validate() en este hook con prioridad 10 y tres argumentos. Agrega el error de campo requerido. Luego, a menos que el filtro wpforms_forms_fields_payment_single_field_validate_amount devuelva falso, verifica el importe: un artículo de precio fijo debe publicar un importe igual al precio configurado, y un artículo Definido por el Usuario no puede publicar un importe negativo o un importe inferior al ajuste Precio Mínimo del campo.

$field_submit es la cadena publicada sin procesar. Ejecútala a través de wpforms_sanitize_amount() antes de compararla como un número. Para rechazar el envío, escribe un mensaje en wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. El filtro wpforms_process_initial_errors se ejecuta sobre los errores recopilados después del bucle; la Lógica Condicional lo utiliza para descartar errores de campos ocultos.

Origen

wpforms/includes/class-process.php

Ejemplo

Aplica un importe mínimo a un campo de Artículo Único Definido por el Usuario que tiene la clase CSS set-minimum, y detiene el envío con un error debajo del campo si el importe es menor.

/**
 * Enforce a minimum amount on a User Defined Single Item field.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_payment-single/
 *
 * @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_single( $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 fields that have the CSS class "set-minimum" in the field's Advanced tab.
    $classes = explode( ' ', $form_data['fields'][ $field_id ]['css'] ?? '' );

    if ( ! in_array( 'set-minimum', $classes, true ) ) {
        return;
    }

    $minimum_amount = 5;

    if ( (float) wpforms_sanitize_amount( $field_submit ) < $minimum_amount ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %s - minimum amount. */
            esc_html__( 'Minimum amount is %s.', 'wpforms' ),
            wpforms_format_amount( $minimum_amount, true )
        );
    }
}
add_action( 'wpforms_process_validate_payment-single', 'wpf_dev_process_validate_payment_single', 10, 3 );

Artículo de referencia