Descripción

Acción que se ejecuta durante el procesamiento de la entrada del formulario, una vez superada la validación inicial del campo.

Parámetros

$campos
array Valores/propiedades del campo de entrada desinfectados.
$entrada
array Original $_POST global.
$form_data
array Configuración/datos del formulario.

Fuente

wpforms/includes/class-process.php

Más información

En wpforms_process se ejecuta al final del proceso de entrada del formulario. Se ejecuta después de que se hayan validado y limpiado todos los campos iniciales del formulario.

Este hook debe utilizarse cuando la acción necesite potencialmente devolver un error y detener el procesamiento del formulario (ver Ejemplos más abajo para más detalles).

Ejemplos: verificar si existe una cuenta de usuario o validar los datos de una pasarela de pago.

Por favor, recuerde que el procesamiento del formulario aún puede ser detenido/evitado después de que este hook se dispare, por otro código que utilice el mismo hook.

Véase la nota siguiente sobre otro gancho similar que se activa una vez superada toda la validación.

Nota importante: Si está realizando el procesamiento y no necesita validación o necesita el ID de entrada, consulte wpforms_process_complete.

Ejemplos

En el código de ejemplo, verá que primero comprobamos el ID del formulario para asegurarnos de que coincide con el formulario al que nos dirigimos. A continuación, comprobamos un campo específico (por el ID de campo) para ver si está vacío.

Sólo recuerda cambiar el ID del formulario de 5 para que coincida con su ID de formulario y cambie el '4' para que coincida con su ID de campo.

/**
 * Action that fires during form entry processing after initial field validation.
 *
 * @link   https://wpforms.com/developers/wpforms_process/
 *
 * @param  array  $fields    Sanitized entry field. values/properties.
 * @param  array  $entry     Original $_POST global.
 * @param  array  $form_data Form data and settings.
 */

function wpf_dev_process( $fields, $entry, $form_data ) {
     
    // Optional, you can limit to specific forms. Below, we restrict output to
    // form #5.
    if ( absint( $form_data[ 'id' ] ) !== 5 ) {
        return $fields;
    }
     
    // check the field ID 4 to see if it's empty and if it is, run the error    
    if(empty( $fields[4][ 'value' ]) ) 
        {
            // Add to global errors. This will stop form entry from being saved to the database.
            // Uncomment the line below if you need to display the error above the form.
            // wpforms()->process->errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'Some error occurred.', 'plugin-domain' );    
 
            // Check the field ID 4 and show error message at the top of form and under the specific field
               wpforms()->process->errors[ $form_data[ 'id' ] ] [ '4' ] = esc_html__( 'Some error occurred.', 'plugin-domain' );
 
            // Add additional logic (what to do if error is not displayed)
        }
    }
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );

PREGUNTAS FRECUENTES

P: ¿Cómo puedo orientar esto para dos formularios diferentes?

R: Si desea utilizar esta función sólo para algunos formularios pero no para todos, sólo tiene que utilizar el símbolo en PHP que significa "o".

Por ejemplo, en el fragmento anterior, puede ver if ( absint( $form_data[ 'id' ] ) !== 5 )esto simplemente significa que sólo vamos a ejecutar ese fragmento en el ID del formulario 5. Pero, ¿y si tuviéramos varios formularios diferentes que quisiéramos que funcionaran?

Hay un par de opciones, veamos cada una de ellas a continuación.

1) Utilización de múltiples funciones

Si quisiera simplemente duplicar la función, darle un nuevo nombre y actualizar el número de ID del formulario. Usted copiaría y pegaría la función completa y luego cambiaría este nombre wpf_dev_process a algo único al principio y al final de la función. Esta no es la forma más limpia, ya que añadirá muchas líneas adicionales a su archivo de funciones, pero es más fácil de leer y sigue siendo eficaz.

2) Añadir los identificadores de formulario adicionales

La forma más sencilla es utilizar la sentencia PHP or y añada los números de identificación adicionales. El símbolo PHP para o es ||and formulario ID 7, usted if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7).

Artículos de referencia