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 Duas Datas no Mesmo Formulário

Introdução

Gostaria de comparar duas datas dentro do mesmo formulário? Usando um pequeno trecho de código PHP, você pode facilmente pegar duas datas e compará-las dentro do mesmo formulário. Neste tutorial, vamos criar um trecho de código PHP que pegará dois seletores de data dentro do mesmo formulário.

Criando o formulário

Primeiro, precisaremos configurar nosso formulário. Vamos criar um formulário e adicionar nossos campos, incluindo os dois campos de formulário Data que estão definidos para o formato Data.

crie seu formulário e adicione seus campos, incluindo seus 2 campos de data

Depois de adicionar esses campos, certifique-se de defini-los como Seletor de Data na aba Avançado.

defina o campo de data para usar o seletor de data para ambos os campos

Se precisar de ajuda para criar seu formulário, por favor, revise esta documentação.

Adicionando o trecho de código para comparar duas datas

Antes de adicionar o trecho de código, você precisará localizar o ID do formulário e os IDs de ambos os campos para os campos Data que você acabou de adicionar ao seu formulário.

Se precisar de ajuda para encontrar esses números de ID, consulte este tutorial.

Quando você tiver esses IDs, poderá adicionar o seguinte trecho de código ao seu site.

/**
 * 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 );

Se você não tem certeza de onde ou como adicionar trechos de código personalizados ao seu site, verifique este tutorial.

A forma como o trecho de código funciona é que ele só será executado no ID do formulário 731, então ele procurará o ID do campo Data 3 e o ID do campo Data 4 e os atribuirá às variáveis $date_1 e $date_2 para que possa verificar se $date_2 é menor ou igual a $date_1. Se for, ele exibirá um erro acima do segundo campo Data mostrando que esta data não pode ser anterior à outra.

a mensagem de erro aparecerá acima quando o trecho de código para comparar duas datas falhar

E é tudo o que você precisa para comparar duas datas dentro do mesmo formulário! Gostaria de fornecer alguma funcionalidade para restrição de idade ao seu formulário também? Confira nosso tutorial sobre Como Fornecer uma Restrição de Idade no Campo de Data do Formulário.

Referência de Ação: wpforms_process