WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

Contact Form 7 のバリデーションのカスタマイズ

以前、「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 でおこなわれるので、これにフックをかければカスタマイズできます。

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!