¡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

Programar un formulario según la hora del día

¿Te interesa programar un formulario basándote en horas específicas del día? Lograr esto es sencillo: puedes configurar fácilmente tu formulario para que aparezca o no durante horas designadas.

En este tutorial, te guiaremos a través del proceso de implementación fluida de esta funcionalidad utilizando el fragmento de código proporcionado.

¡Vamos a empezar y hacer que programar tu formulario sea pan comido!


Creación del formulario

Para empezar, vamos a crear un nuevo formulario y añadir nuestros campos. Si necesitas ayuda para crear tu formulario, echa un vistazo a esta útil guía.

para programar un formulario primero necesitas crear uno y añadir tus campos

Añadir el fragmento

Una vez creado tu formulario, necesitarás añadir este fragmento a tu sitio. Si necesitas ayuda sobre cómo y dónde añadir fragmentos a tu sitio, por favor, revisa 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 );

Hay algunas cosas a tener en cuenta en este script. Este script solo se ejecutará en el ID del formulario 3602, por lo que deberás actualizar este número de ID para que coincida con tu propio formulario.

Para obtener ayuda para encontrar el número de ID de tu formulario, por favor, consulta este tutorial.

A continuación, la variable $hours solo considerará la hora actual del servidor, no la del navegador o el ordenador del usuario. También recupera la hora en formato de 24 horas usando la H mayúscula. Si deseas usar el formato de 12 horas, cambia la H por una h. Dependiendo del formato que elijas, es posible que necesites actualizar el if ( $hours >= 20 && $hours < 8 ).

Recuerda actualizar el mensaje que se mostrará a tus usuarios en la declaración _e para que coincida con lo que deseas mostrar cuando el formulario esté cerrado para tus visitantes.

Finalmente, la última parte del script ocultará el formulario con ID 23 usando echo 'jQuery("#wpforms-form-3602").hide();';. Recuerda actualizar el 3602 para que coincida con el ID de tu propio formulario.

Si un visitante visita tu página cuando el formulario está cerrado, verá tu mensaje.

con este fragmento has programado fácilmente tu formulario para que se muestre solo durante ciertas horas del día

¡Y eso es todo lo que necesitas para programar un formulario según la hora del día!

A continuación, ¿te gustaría mostrar u ocultar un botón de envío? Echa un vistazo a nuestro tutorial sobre cómo mostrar condicionalmente el botón de envío de WPForms.

Referencia de Acción: wpforms_frontend_output_after