¡Atención!

Este artículo contiene código PHP y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Cómo comparar dos campos de hora en un formulario

Introducción

¿Te interesa comparar dos campos de Hora dentro de tu formulario y capturar la diferencia calculada en tu entrada? ¡No busques más! Este tutorial está hecho a medida para ti. Te guiaremos a través del proceso de configuración de tu formulario y te proporcionaremos el fragmento de PHP necesario para implementar esta funcionalidad sin problemas en tu sitio.

Creación del formulario

Para empezar, creemos un nuevo formulario y configuremos nuestros campos. En esta guía, diseñaremos un formulario específicamente para reservar salas de fiestas. Nuestro fragmento utilizará un Campo Oculto para calcular y añadir automáticamente las horas totales reservadas a la entrada. Esta función es particularmente útil para el equipo de contabilidad, ya que proporciona una visión general sencilla para la facturación.

Si no estás familiarizado con la creación de formularios, puedes 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 sala, un campo Fecha para la fecha de la reserva, dos campos de Hora para especificar la hora de inicio y fin de la reserva, y finalmente, un Campo Oculto final para almacenar las horas totales calculadas utilizando nuestro fragmento.

comience creando su formulario y agregando sus campos

Añadir el fragmento

A continuación, vamos a añadir el fragmento a nuestro sitio. Si no estás seguro de dónde o cómo añadir fragmentos, por favor, consulta 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 solo se ejecutará en el ID del formulario 731. Examinará los dos campos de Hora del formulario, que son los IDs 37 y 38. Utilizando la función round, calculará la diferencia entre las dos horas y almacenará la diferencia dentro del Campo Oculto.

Necesitarás actualizar el fragmento para que coincida con los IDs del formulario y de los campos que tengas en tu formulario. Si necesitas ayuda para encontrar estos IDs, por favor, consulta este tutorial.

con este fragmento ahora puedes dos campos de hora en un formulario

¿Te gustaría comparar también dos fechas? Echa un vistazo a nuestro tutorial sobre Cómo comparar dos fechas en el mismo formulario.

Referencia de acción: wpforms_process