AI要約
はじめに
同じフォーム内で2つの日付を比較しますか?簡単なPHPスニペットを使用すると、2つの日付を取得し、同じフォーム内で比較できます。このチュートリアルでは、同じフォーム内に2つの日付ピッカーを配置するPHPスニペットを紹介します。
フォームの作成
まず、フォームを設定する必要があります。「日付」形式に設定された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つの日付を比較するために必要なすべてが揃いました!フォームに年齢制限の機能も提供したいですか?日付ピッカーフォームフィールドに年齢制限を設ける方法に関するチュートリアルをご覧ください。
関連
アクションリファレンス: wpforms_process