Cómo comparar dos fechas en el mismo formulario

Introducción

¿Le gustaría comparar dos fechas dentro del mismo formulario? Usando un pequeño snippet PHP puedes fácilmente tomar dos fechas y compararlas dentro del mismo formulario. En este tutorial, vamos a un fragmento de PHP que se llevará a dos selectores de fecha dentro de la misma forma.

Creación del formulario

En primer lugar, tendremos que configurar nuestro formulario. Vamos a crear un formulario y añadir nuestros campos, incluyendo los dos campos de formulario de fecha que se establecen en el formato de fecha.

cree su formulario y añada sus campos incluyendo sus 2 campos de fecha

Una vez que haya añadido estos campos, asegúrese de configurarlos como Selector de fecha en la pestaña Avanzado.

configurar el campo de fecha para utilizar el selector de fecha para ambos campos

Si necesita ayuda para crear su formulario, consulte esta documentación.

Añadir el fragmento para comparar dos fechas

Antes de añadir el fragmento, tendrá que localizar el ID del formulario y los dos ID de campo de los campos Fecha que acaba de añadir a su formulario.

Si necesita ayuda para encontrar estos números de identificación, consulte este tutorial.

Cuando tengas estos IDs puedes añadir el siguiente fragmento a tu sitio.

/**
 * Compare 2 dates inside the same form.
 *
 * @link  https://wpforms.com/developers/how-to-compare-two-dates-in-the-same-form/
 */

function wpf_dev_compare_dates( $fields, $entry, $form_data ) {
      
    // Optional, you can limit to specific forms. Below, we restrict output to
    // form #731.
    if ( absint( $form_data[ 'id' ] ) !== 731 ) {
        return $fields;
    }
      
	// 3 is the ID of date 1 field
	$date_1 = $fields[3][ 'unix' ]; 
	
	// 4 is the ID of date 2 field
	$date_2 = $fields[4][ 'unix' ]; 
	
	// If date 2 is earlier of the same as time 1
	if ( $date_2 <= $date_1 ) {

		
                // [ 'header' ] will display the error message above the form
                // [ 'footer' ] will display the error message under the form
		wpforms()->process->errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'The pickup date should not be earlier than the order date.', 'plugin-domain' );
	}
	
}
add_action( 'wpforms_process', 'wpf_dev_compare_dates', 10, 3 );

Si no está seguro de dónde o cómo añadir fragmentos personalizados a su sitio, consulte este tutorial.

La forma en que funciona el snippet es que sólo se ejecutará en el formulario ID 731, entonces buscará el campo Fecha ID de 3 y el campo Fecha ID de 4 y los asignará a las variables $date_1 y $date_2 para que pueda comprobar si $date_2 es menor o igual que $date_1, si lo es mostrará un error por encima del segundo campo Fecha mostrando que esta fecha no puede ser anterior a la otra.

el mensaje de error aparecerá arriba cuando falle el fragmento para comparar dos fechas

¡Y eso es todo lo que necesitas para comparar dos fechas dentro del mismo formulario! ¿Le gustaría proporcionar alguna funcionalidad para una restricción de edad a su formulario también? Echa un vistazo a nuestro tutorial sobre Cómo proporcionar una restricción de edad en el campo de formulario Datepicker.

Acción Referencia: wpforms_process