この実装、面倒なら代行します
以前、「Contact Form 7 で問い合わせメール送信後に、カスタムフィールドの値を更新する」の中で 、wpcf7_mail_sent にフックをかけて、Contact Form 7でメール送信後の処理にカスタマイズを加える事例についてご紹介しました。
今回はその手前、Contact Form 7フォームの入力内容チェック、つまりバリデーションのカスタマイズについて。
ちなみに「Contact Form 7で、メールアドレスの確認用入力と一致チェック機能をつける」でもContact Form 7バリデーションチェックを紹介していますが、今回はもう少し汎用的なものについてご紹介したいと思います。
例として、特定のユーザーにのみクーポン番号を発行し、サイトのフォーム内にそのクーポン番号入力欄を設けておいて、ユーザーが入力したクーポン番号が正しい場合のみそのフォームを送信できるような機能を考えてみましょう(実際にはそんなケースないと思いますが)。
クーポン番号を「123456」とします。
Contact Form 7フォームで『クーポン番号: [number* coupon]』とし、ユーザーがクーポン番号を入力したときに、その番号が「123456」でなかったら、フォームのバリデーションで「クーポン番号が間違っているため送信できません。」とエラーメッセージを表示するような処理をしてみます。
テーマの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 == 'coupon' ) { $coupon = (int) $_POST[ $name ]; if ( $coupon != '123456' ) { $result->invalidate( $name, 'クーポン番号が間違っているため送信できません。' ); } } } return $result; }
Contact Form 7のバリデーションチェックは wpcf7_validate でおこなわれるので、これにフックをかければカスタマイズできます。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。