ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

時刻に基づいてフォームをスケジュールする方法

特定の時間帯に基づいてフォームをスケジュールすることに興味がありますか?これは簡単に実現できます。指定した時間帯にフォームを表示または非表示にするように簡単に設定できます。

このチュートリアルでは、提供されたコードスニペットを使用して、この機能をシームレスに実装するプロセスをガイドします。

早速始めましょう。フォームのスケジュール設定を簡単にしましょう!


フォームの作成

まず、新しいフォームを作成し、フィールドを追加します。フォームの作成方法についてサポートが必要な場合は、こちらの役立つガイドをご覧ください

フォームをスケジュールするには、まずフォームを作成し、フィールドを追加する必要があります

スニペットの追加

フォームが作成されたら、このスニペットをサイトに追加する必要があります。スニペットをサイトに追加する方法や場所についてサポートが必要な場合は、こちらのチュートリアルをご確認ください

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

このスクリプトには注意点がいくつかあります。このスクリプトはフォームID 3602でのみ実行されるため、このID番号をご自身のフォームに合わせて更新する必要があります。

フォームID番号の見つけ方については、こちらのチュートリアルをご覧ください

次に、$hours変数は、ユーザーのブラウザやコンピューターの現在の時間ではなく、サーバー上の現在の時間のみを参照します。また、大文字のHを使用して24時間形式で時間​​を取得します。12時間形式を使用したい場合は、Hhに変更してください。選択した形式によっては、if ( $hours >= 20 && $hours < 8 )を更新する必要がある場合があります。

_eステートメントで、フォームが閉じているときに訪問者に表示したいメッセージに合わせて、訪問者に表示されるメッセージを更新することを忘れないでください。

最後に、スクリプトの最後の部分で、フォームID 23echo 'jQuery("#wpforms-form-3602").hide();';を使用して非表示にします。3602をご自身のフォームIDに合わせて更新することを忘れないでください。

訪問者がフォームが閉じている間にページを訪問すると、メッセージが表示されます。

このスニペットを使用すると、1日の特定の時間にのみ表示されるようにフォームを簡単にスケジュールできます

これで、時間帯に基づいてフォームをスケジュールするために必要なすべてが揃いました!

次に、送信ボタンを表示または非表示にしますか?WPFormsの送信ボタンを条件付きで表示する方法に関するチュートリアルをご覧ください。

アクション参照:wpforms_frontend_output_after