Atenção!

Este artigo contém código PHP e destina-se a desenvolvedores. Oferecemos este código como uma cortesia, mas não fornecemos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação extra, consulte o tutorial do WPBeginner sobre como adicionar código personalizado.

Dispensar

Como Comparar Dois Campos de Hora em um Formulário

Introdução

Você tem interesse em comparar dois campos de Horário em seu formulário e capturar a diferença calculada em sua entrada? Não procure mais! Este tutorial foi feito sob medida para você. Vamos guiá-lo através do processo de configuração do seu formulário e fornecer o trecho de PHP necessário para implementar essa funcionalidade em seu site sem problemas.

Criando o formulário

Para começar, vamos criar um novo formulário e configurar nossos campos. Neste guia, projetaremos um formulário especificamente para reservar salas de festa. Nosso trecho usará um Campo Oculto para calcular e anexar automaticamente as horas totais reservadas à entrada. Esse recurso é particularmente útil para a equipe de contabilidade, fornecendo uma visão geral simples para faturamento.

Se você não tem familiaridade com a criação de formulários, pode consultar esta documentação para obter ajuda.

Na configuração do nosso formulário, incluiremos campos padrão como Nome, Email, Endereço e Telefone. Além disso, incorporaremos um campo Dropdown para seleção de sala, um campo Data para a data da reserva, dois campos de Horário para especificar os horários de início e fim da reserva e, finalmente, um Campo Oculto de conclusão para armazenar o total de horas calculadas usando nosso trecho.

comece criando seu formulário e adicionando seus campos

Adicionando o snippet

Em seguida, adicionaremos o trecho ao nosso site. Se você não tem certeza de onde ou como adicionar trechos, por favor, confira 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 trecho só será executado no ID do formulário 731. Ele analisará os dois campos de Horário do formulário, que são os IDs 37 e 38. Usando a função round, ele calculará a diferença entre os dois horários e armazenará a diferença no Campo Oculto.

Você precisará atualizar o trecho para corresponder aos IDs de formulário e campo que você tem em seu formulário. Se precisar de ajuda para encontrar esses IDs, por favor, confira este tutorial.

usando este trecho você pode agora dois campos de horário em um formulário

Gostaria também de comparar duas datas? Dê uma olhada em nosso tutorial sobre Como Comparar Duas Datas no Mesmo Formulário.

Referência de Ação: wpforms_process