Resumen de IA
Descripción
Acción que se dispara durante el procesamiento de entradas del formulario, después de que la validación inicial de los campos haya sido superada.
Parámetros
- $fields
- array Valores/propiedades de los campos de entrada saneados.
- $entry
- array Global $_POST original.
- $form_data
- array Configuración/datos del formulario.
Origen
wpforms/includes/class-process.php
Más Información
La acción wpforms_process se dispara hacia el final del procesamiento de entradas del formulario. Se ejecuta después de que todos los campos iniciales del formulario hayan sido validados y saneados.
Este hook debe usarse cuando la acción potencialmente necesita devolver un error y detener el procesamiento del formulario (ver Ejemplos a continuación para más detalles).
Ejemplos: verificar si existe una cuenta de usuario o validar datos para una pasarela de pago.
Recuerda que el procesamiento del formulario aún puede ser detenido/prevenido después de que este hook se dispare, por otro código que use el mismo hook.
Consulta la nota a continuación sobre otro hook similar que se dispara después de que se superan todas las validaciones.
Nota importante: Si estás realizando el procesamiento y no necesitas validación o necesitas el ID de la entrada, consulta wpforms_process_complete.
Ejemplos
En el código de ejemplo, primero comprobaremos el ID del formulario para asegurarnos de que coincide con el formulario que se está dirigiendo. Luego, comprobaremos un campo específico (por el ID del campo) para ver si está vacío.
Solo recuerda cambiar el ID del formulario de 5 para que coincida con tu ID de formulario y cambiar el '4' para que coincida con tu 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 podría dirigir esto a dos formularios diferentes?
R: Si deseas usar esta función solo para algunos formularios pero no para todos, solo necesitas usar el símbolo en PHP que significa "o".
Por ejemplo, en el fragmento anterior, puedes ver if ( absint( $form_data[ 'id' ] ) !== 5 ), esto simplemente significa que solo ejecutaremos ese fragmento en el ID de formulario 5. Pero, ¿qué pasa si teníamos algunos formularios diferentes en los que queríamos que esto se ejecutara?
Hay un par de opciones, veamos cada opción a continuación.
1) Usando múltiples funciones
Si quisieras simplemente duplicar la función, dale un nuevo nombre a la función y actualiza el número del ID del formulario. Copiarías y pegarías toda la función y luego cambiarías este nombre wpf_dev_process por algo único al principio y al final de la función. Esta no es la forma más limpia, ya que agregará muchas líneas adicionales a tu archivo de funciones, pero es más fácil de leer y sigue siendo efectiva.
2) Añadiendo los IDs de formulario adicionales
La forma más fácil es simplemente usar la declaración PHP or y agregar los números de ID adicionales. El símbolo PHP para o es ||. Por lo tanto, si quisieras que esto se ejecutara en el formulario ID 5 o en el formulario ID 7, tendrías 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 tu 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 agregar validación de campo de código postal en sus formularios
- Cómo realizar comparaciones de campos dentro de tu WPForms
- Cómo agregar validación de campos de dirección para Authorize.net