Introdução
Está interessado em comparar dois campos de tempo no seu formulário e registar a diferença calculada na sua entrada? Não precisa de procurar mais! Este tutorial foi feito sob medida para você. Iremos guiá-lo através do processo de configuração do seu formulário e fornecer-lhe o snippet PHP necessário para implementar esta funcionalidade no seu site.
Criar o formulário
Para começar, vamos criar um novo formulário e configurar os nossos campos. Neste guia, vamos criar um formulário especificamente para reservar salões de festas. O nosso snippet utilizará um campo oculto para calcular e anexar automaticamente o total de horas reservadas à entrada. Esta funcionalidade é particularmente útil para a equipa de contabilidade, fornecendo uma visão geral simples para a faturação.
Se não estiver familiarizado 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, E-mail, Endereço e Telefone. Além disso, vamos incorporar um campo Dropdown para seleção do quarto, um campo Data para a data da reserva, dois campos Hora para especificar as horas de início e fim da reserva e, finalmente, um Campo Oculto final para armazenar o total de horas calculado utilizando o nosso snippet.
Adicionar o snippet
Em seguida, vamos adicionar o snippet ao nosso site. Se não tiver a certeza de onde ou como adicionar snippets, consulte 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 snippet só será executado no ID do formulário 731. Analisará os dois Tempo campos do formulário, que são os IDs 37 e 38. Utilizar o round
calculará a diferença entre os dois tempos e armazenará a diferença dentro da função Campo oculto
Terá de atualizar o snippet para corresponder aos IDs do formulário e do campo que tem no seu formulário. Se precisar de ajuda para saber onde encontrar essas IDs, consulte este tutorial.
Também gostaria de comparar duas datas? Consulte o nosso tutorial sobre Como comparar duas datas no mesmo formulário.
Relacionadas
Referência da ação: wpforms_process