Cómo comparar dos campos de tiempo en un formulario

Introducción

¿Está interesado en comparar dos campos de Tiempo dentro de su formulario y capturar la diferencia calculada en su entrada? No busque más. Este tutorial está hecho a su medida. Le guiaremos a través del proceso de configuración de su formulario y le proporcionaremos el fragmento PHP necesario para implementar sin problemas esta funcionalidad en su sitio.

Creación del formulario

Para empezar, creemos un nuevo formulario y configuremos nuestros campos. En esta guía, diseñaremos un formulario específico para reservar salas de fiestas. Nuestro fragmento utilizará un campo oculto para calcular y añadir automáticamente el total de horas reservadas a la entrada. Esta característica es particularmente útil para el equipo de contabilidad, ya que proporciona una visión general directa para la facturación.

Si no está familiarizado con la creación de formularios, puede consultar esta documentación para obtener ayuda.

En la configuración de nuestro formulario, incluiremos campos estándar como Nombre, Correo electrónico, Dirección y Teléfono. Además, incorporaremos un campo desplegable para la selección de la habitación, un campo de fecha para la fecha de la reserva, dos campos de hora para especificar las horas de inicio y finalización de la reserva y, por último, un campo oculto para almacenar el total de horas calculadas utilizando nuestro fragmento.

comience creando su formulario y añadiendo sus campos

Añadir el fragmento

A continuación, vamos a añadir el snippet a nuestro sitio. Si no estás seguro de dónde o cómo añadir snippets, por favor, echa un vistazo a este tutorial.

/**
 * Compare two time fields in a form
 * 
 * @link https://wpforms.com/developers/how-to-compare-two-time-fields-in-a-form/
 */

function wpf_wpforms_update_total_field( $fields, $entry, $form_data ) {

	// Only run on my form with ID = 731
	if( 731 != $form_data[ 'id' ] ){
        return $fields;
    }
	
    // Field ID 37 is the first time field of the form
    $start_time = strtotime( $fields[37][ 'value' ] );
    
    // Field ID 38 is the second time field of the form
    $finishing_time = strtotime( $fields[38][ 'value'] );
	
    // Field ID 41 is the hidden field that will calculate the difference
    // between the two time fields and store the hours inside a hidden field of the entry
	$fields[41][ 'value' ] = round(abs($finishing_time  - $start_time)/ 3600,2) . __( ' Hours', 'text-domain');

	return $fields;
}

add_filter( 'wpforms_process_filter', 'wpf_wpforms_update_total_field', 10, 3 );

Este fragmento sólo se ejecutará en el ID del formulario 731. Examinará los dos Tiempo campos del formulario, que son los ID 37 y 38. Utilización de la round calculará la diferencia entre los dos tiempos y la almacenará dentro de la función Campo oculto

Tendrá que actualizar el fragmento para que coincida con el formulario y los ID de campo que tiene en su formulario. Si necesita ayuda para encontrar estos ID, consulte este tutorial.

utilizando este fragmento de código puede ahora dos campos de tiempo en un formulario

¿Quiere comparar también dos fechas? Eche un vistazo a nuestro tutorial sobre Cómo comparar dos fechas en el mismo formulario.

Acción Referencia: wpforms_process