@momi9 (momoko tanaka)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

wordpress contact form7 日付入力にて曜日を制限する方法

解決したいこと

wordpressプラグイン「contact form7」にて注文フォームを作成しているのですが、
週末のみの営業のため、日付入力で曜日を土日のみに制限したいと思います。

下記のように”min:next_saturday”、”step:7”と指定すると、土曜日のみに制限はできるのですが、土曜日と日曜日の両方に制限する方法がわかりません。

[date date-1 id:date-1 min:next_saturday max:next_saturday+15days step:7]

以前は「Contact Form 7 Datepicker」というプラグインで実装可能だったようですが、現在はこのプラグインの提供はされていないようです。

対応方法をご教授いただけると幸いです。

0 likes

3Answer

下記サイトを参考に対応してみましたが、ダメでした。

  【WordPress】Contact Form 7 Datepicker 日曜・祝日を選択できないようにする
   https://memorandums.3ki3ki.com/datepicker/

どうやら、2020年7月よりcontact form7では jQuery イベントの使用が廃止されたようです。
DOMイベントに切り替えることを推奨されています。

   Contact Form 7 5.2 のリリースについて
   https://contactform7.com/ja/2020/07/04/contact-form-7-52/

jQueryを使わないで対応するしかないでしょうか。

0Like

利用する問い合わせフォームプラグインを「MW WP Form」に変更して、jQueryで対応しようとしましたが、javascriptに詳しくなかったためか、うまくいきませんでした。

そのため、カレンダー表示をあきらめ、selectで選択する方針としました。

function.phpにフィルターフック「wpcf7_form_tag_data_option(独自タグの選択肢を指定する)」のアクションを追加し、2週間後までの土日を選択肢として表示させるという対応としました。

参考:
 Contact Form 7 のセレクトボックスやチェックボックスの値を動的に変える
 https://little-bit-code.work/posts/wp/contactform7-add-data/

0Like

クローズ済の質問にすみません。
現在私も同じ問題に直面しているのですが、対応されたフィルターフックを使用してselectで選択できる曜日を指定した方法について具体的な内容を教えていただくことは可能でしょうか。
お手間でしたらスルーしてください。

0Like

Comments

  1. @momi9

    Questioner

    下記のように、次の土日とその翌週の土日の日付を取得して表示させる関数をフィルターフックで呼び出しています。翌日以降の14日以内の土日を呼び出すようにしていますが、土曜日に入力した場合は日付の表示順序がおかしくなってしまうので、日付を並べ替えています。

    初心者が書いたものなので、もっといい書き方があると思います。


    function wpcf7_add_reserve_date( $children, $atts ) {
    date_default_timezone_set('Asia/Tokyo');
    $Next_saturday = date('Y年m月d日(土)', strtotime('next Saturday'));
    $Next_sunday = date('Y年m月d日(日)', strtotime('next Sunday'));
    $Snd_saturday = date('Y年m月d日(土)', strtotime('next saturday +7 day '));
    $Snd_sunday = date('Y年m月d日(日)', strtotime('next sunday +7 day '));

    if( $atts['name'] == 'reserve_date' ){
    if(date('w') == 6 ){
    $dates = array(
    "",
    $Next_sunday,
    $Next_saturday,
    $Snd_sunday,
    $Snd_saturday
    );
    }else{
    $dates = array(
    "",
    $Next_saturday,
    $Next_sunday,
    $Snd_saturday,
    $Snd_sunday
    );
    }
    foreach( $dates as $date ){
    $select = $date;
    $children[$select] = $select;
    }

    }
    return $children;
    }
    add_filter( 'wpcf7_form_tag_data_option', 'wpcf7_add_reserve_date', 10, 2 );
  2. ありがとうございます。お手間をおかけして申し訳ありません。
    呼び出して並び替えしているんですね…とても参考になります。
    教えていただいた内容を参考にさせていただき、自分なりに構築してみます。
    本当にありがとうございました。

Your answer might help someone💌