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
- Cómo validar un campo de URL de redes sociales en un formulario
- Cómo restringir números en un campo de formulario de texto de una sola línea
- Cómo proporcionar una restricción de edad en el campo de formulario Datepicker
- Cómo comparar dos fechas en el mismo formulario
- Cómo añadir validación de campos de código postal en sus formularios
- Cómo realizar comparaciones de campos en sus WPForms
- Cómo agregar validación de campo de dirección para Authorize.net