
別の事例: 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カスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!