Agendamento de um formulário com base na hora do dia

Você tem interesse em programar um formulário com base em horários específicos do dia? Conseguir isso é simples: você pode configurar facilmente seu formulário para aparecer ou não durante os horários designados.

Neste tutorial, nós o orientaremos no processo de implementação perfeita dessa funcionalidade usando o trecho de código fornecido.

Vamos nos aprofundar e facilitar o agendamento de seu formulário!


Criando o formulário

Para começar, vamos criar um novo formulário e adicionar nossos campos. Se precisar de ajuda para criar o formulário, dê uma olhada neste guia útil.

Para agendar um formulário, primeiro você precisa criar um e adicionar seus campos

Adicionando o snippet

Depois que o formulário for criado, você precisará adicionar esse snippet ao seu site. Se precisar de ajuda sobre como e onde adicionar snippets ao seu site, consulte este tutorial.

/* Hide a specific form based on the time of day 
 *
 * @link https://wpforms.com/developers/how-to-schedule-a-form-base-on-the-time-of-day/
*/
 
function wpf_dev_form_open_check( $form_data, $form ) {
     
    // Only process this snippet on form ID 3602
    if ( absint( $form_data[ 'id' ] ) !== 3602 ) {
        return;
    } 
    
	// H is for 24 hour format and h is for the 12 hour format
	// Get the current 24 hour format in hours only, this is pulled from your server
	$hours = intval(date('H'));

    // The form will be closed to any submissions from 8PM (20 in 24-hour time format) to 8AM
    if ( $hours >= 20 && $hours < 8 ) {
		// Display a message stating the form is currently closed
    	_e( 'We\'re sorry, this contest is only open for entry everyday from 8:00 AM EST to 8:00 PM EST. Please check back tomorrow for your raffle entry.', 'textdomain' );
		
		// Run a separate script to hide the form if it is currently closed to submissions
		echo '<script type="text/javascript">';
		echo 'jQuery("#wpforms-form-3602").hide();';
		echo '</script>';
	}

}
add_action( 'wpforms_frontend_output_after', 'wpf_dev_form_open_check', 10, 2 );

Há alguns aspectos a serem observados nesse script. Esse script só será executado no formulário ID 3602, portanto, você precisará atualizar esse número de ID para corresponder ao seu próprio formulário.

Para obter ajuda na localização do número de identificação do formulário, consulte este tutorial.

Em seguida, o $hours A variável só examinará a hora atual que está no seu servidor, não no navegador ou no computador do usuário. Ela também recupera a hora com base no formato de 24 horas usando a letra maiúscula H. Se você quiser usar o formato de 12 horas, altere o H para um h. Dependendo do formato escolhido, talvez seja necessário atualizar o if ( $hours >= 20 && $hours < 8 ).

Lembre-se de atualizar a mensagem que será exibida aos seus usuários no _e para corresponder ao que você gostaria de exibir quando o formulário for fechado para seus visitantes.

Por fim, a última parte do script ocultará o ID do formulário 23 usando echo 'jQuery("#wpforms-form-3602").hide();';. Lembre-se de atualizar o 3602 para corresponder ao seu próprio ID de formulário.

Se um visitante acessar sua página quando o formulário for fechado, ele verá sua mensagem.

Com esse snippet, você pode programar facilmente seu formulário para ser exibido somente em determinados horários do dia

E isso é tudo o que você precisa para agendar um formulário com base na hora do dia!

Em seguida, você gostaria de mostrar ou ocultar um botão de envio? Dê uma olhada no nosso tutorial sobre como mostrar condicionalmente o botão de envio do WPForms.

Referência da ação: wpforms_frontend_output_after