Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
@momi9
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A
Closed

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
3
Answer

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

0
下記のように、次の土日とその翌週の土日の日付を取得して表示させる関数をフィルターフックで呼び出しています。翌日以降の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 );
ありがとうございます。お手間をおかけして申し訳ありません。
呼び出して並び替えしているんですね…とても参考になります。
教えていただいた内容を参考にさせていただき、自分なりに構築してみます。
本当にありがとうございました。
View the remaining 1 comments.
Report this answer

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

  【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を使わないで対応するしかないでしょうか。

0
Report this answer

利用する問い合わせフォームプラグインを「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/

0
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login