はじめに
同じフォーム内で2つの日付を比較したいですか?小さなPHPスニペットを使えば、同じフォーム内で簡単に2つの日付を取得して比較することができます。このチュートリアルでは、同じフォーム内で2つの日付ピッカーを取得するPHPスニペットを紹介します。
フォームの作成
まず、フォームをセットアップする必要があります。フォームを作成し、2つの日付フォームフィールドを含むフィールドを追加します。
これらのフィールドを追加したら、AdvancedタブでDate Pickerに設定してください。
フォームの作成にヘルプが必要な場合は、こちらのドキュメントをご覧ください。
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つの日付を比較するのに必要なのはこれだけです!フォームに年齢制限の機能を追加したいですか?チュートリアル「日付ピッカーのフォームフィールドに年齢制限を設ける方法」をご覧ください。
関連
アクション・リファレンス:wpforms_process