この実装、面倒なら代行します
フォームのプラグイン「Contact Form 7」のバリデーション時に、自分のフォームのIDを取得する方法のご紹介です。
項目は同じなんだけど表示するページが異なるので同じフォームを複製して分けている、といったケースで、表示するページによって項目に対するバリデーションルールを変えたい場合などに使えます。
Contact Form 7のバリデーションフィルター関数 wpcf7_validate では、フォームが埋め込まれているページの情報を取得することができないようです。global $post が取れませんでした。そのため、すぐ思いつく is_page でページ指定して条件を付けるとか、$post->ID でページの投稿IDを取得して特定のページだった時に条件を付けるとか、そういうよく使うソリューションは使えません。
そこで、ページの投稿IDの代わりに、Contact Form 7のフォームの投稿IDを取得して、そのIDの値で条件を付けるという方法をとります。
フォームの投稿IDは管理画面でContact Form 7の対象のフォーム編集画面を開き、URLを見ればわかります。
https://100webdesign.jp/wp-admin/admin.php?page=wpcf7&post=XXXX&action=edit
ここでいう「XXXX」が投稿IDです。
この投稿IDを使います。
add_filter('wpcf7_validate', 'wpcf7_validate_customize', 11, 2); function wpcf7_validate_customize($result, $tags){ $contact_form = WPCF7_ContactForm::get_current(); //自分のフォームの情報を取得 $contact_form_id = $contact_form -> id; //自分のフォームのpostIDを取得 if($contact_form_id == XXXX){ //フォームのIDを指定する //特定のバリデーションルールを記述する } return $result; }
という感じです。
私も知らなかったので個人的な備忘録としても残しておきます。
フォームプラグイン「Contact Form 7」のバリデーションカスタマイズやフォームの内容を変化させる方法について、過去にもいくつか事例を紹介してますので、興味あれば。
Contact Form 7 のバリデーションのカスタマイズ
https://100webdesign.jp/services/wordpress/wp_result/wp_result-21586/
【Contact Form 7】フォームの特定の項目の入力内容によって、別の任意入力項目を必須に切り替える
https://100webdesign.jp/services/wordpress/wp_result/wp_result-22589/
フォームの選択項目によって、他の項目の表示/非表示や必須/任意を切り替える
https://100webdesign.jp/services/wordpress/wp_result/wp_result-24245/
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。