functions.phpに以下のように記述する。コピペでも可。
/** * ContactForm7でフリーメールを弾く */ function wpcf7_validate_email_reject_freemail($result,$tag){ $tag = new WPCF7_FormTag( $tag ); $freemails = array( 'gmail.com', 'yahoo.co.jp', 'msn.com', 'hotmail.co.jp', 'hotmail.com', ); $email = isset ($_POST[$tag->name]) ? trim($_POST[$tag->name]) : ''; if(!empty($email)){ foreach($freemails as $freemail){ if(preg_match("/@" . preg_quote($freemail) . "$/ui",$email)){ $result->invalidate ($tag, 'フリーメールはご利用頂けません。'); break; } } } return $result; } add_filter('wpcf7_validate_email', 'wpcf7_validate_email_reject_freemail', 11, 2); add_filter('wpcf7_validate_email*', 'wpcf7_validate_email_reject_freemail', 11, 2);
freemails
配列にフリーメールドメインを格納し、ContactForm7で入力されたメールアドレスをフリーメールドメインかチェックし、1つでもマッチすれば送信を中断してエラー文を返す作りですね。