ご注意!

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

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

閉じる

同じフォームで2つの日付を比較する方法

はじめに

同じフォーム内で2つの日付を比較しますか?簡単なPHPスニペットを使用すると、2つの日付を取得し、同じフォーム内で比較できます。このチュートリアルでは、同じフォーム内に2つの日付ピッカーを配置するPHPスニペットを紹介します。

フォームの作成

まず、フォームを設定する必要があります。「日付」形式に設定された2つの日付フォームフィールドを含むフィールドを追加して、フォームを作成します。

フォームを作成し、2つの日付フィールドを含むフィールドを追加します

これらのフィールドを追加したら、詳細タブでそれらを日付ピッカーに設定してください。

両方のフィールドで日付ピッカーを使用するように日付フィールドを設定します

フォームの作成にヘルプが必要な場合は、このドキュメントを確認してください

2つの日付を比較するスニペットの追加

スニペットを追加する前に、フォームIDと、フォームに追加したばかりの日付フィールドの両方のフィールドIDを見つける必要があります。

これらのID番号を見つけるのにヘルプが必要な場合は、このチュートリアルを参照してください

これらのIDを取得したら、次のスニペットをサイトに追加できます。

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

カスタムスニペットをサイトに追加する場所や方法がわからない場合は、このチュートリアルを確認してください

スニペットの仕組みは、フォームID731でのみ実行され、次に日付フィールドID3日付フィールドID4を探し、それらを変数$date_1および$date_2に割り当てて、$date_2が$date_1以下であるかどうかを確認できるようにします。もしそうであれば、2番目の日付フィールドの上に、この日付は最初の日付より前にはできないことを示すエラーが表示されます。

2つの日付を比較するスニペットが失敗した場合、エラーメッセージが上に表示されます

これで、同じフォーム内で2つの日付を比較するために必要なすべてが揃いました!フォームに年齢制限の機能も提供したいですか?日付ピッカーフォームフィールドに年齢制限を設ける方法に関するチュートリアルをご覧ください。

アクションリファレンス: wpforms_process