この実装、面倒なら代行します
別の事例: Contact Form 7 のバリデーションのカスタマイズ
にて、Contact Form 7 を使ったフォームのあるテキスト項目の入力内容が特定の値でなかった場合にエラーとするようなフォームバリデーションのカスタマイズについてご紹介しました。
今回は、フォームの特定の項目の入力内容によって、別の項目の「必須入力/任意入力」を切り替える方法について。
例として、項目「連絡方法(項目名:radio-way)」というラジオボタンでユーザーが連絡方法として「電話」を選択したら、初期設定で任意入力の別のテキスト入力項目「電話番号(項目名:tel)」を必須入力項目にする方法を紹介します。こういうの、たまに要望ありそうですね。
テーマの functions.php に以下を追記します。
add_filter( 'wpcf7_validate', 'kaiza_wpcf7_validate', 11, 2 ); function kaiza_wpcf7_validate( $result, $tags ) { foreach ( $tags as $tag ) { $name = $tag['name']; if ( $name == 'radio-way' ) { $way = $_POST[ $name ]; } } foreach ( $tags as $tag ) { $name = $tag['name']; if ( $name == 'tel' ) { $tel = $_POST[ $name ]; if ( $way == '電話' && $tel == '') { //ラジオボタンじゃなくてチェックボックスなら //if ( in_array('電話', $way) && $tel == '') { $result->invalidate( $name, '必須項目に入力してください。' ); } } } return $result; }
連絡方法の値を取得しそれが「電話」だったとき、電話番号入力項目がブランクだったらバリデーションエラーを表示させます。
ご活用ください。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。