Contact form 7にreCAPTCHA設定でメールが送れないときのスパム対策

Contact form7にreCAPTCHA設定でメールが送れなくなった!

最近、お問い合わせフォームからスパムメールが沢山送られてくるようになったので、コンタクトフォーム7のインテグレーション?Google ReCAPTCHAを設定したところ、なぜかメールが送信できないようになってしまいました。
(送信チェックしてよかった~(;・∀・)=3)

↓プラグインのバージョンなど

  • WordPressのバージョン
  • Contact form 7のバージョンは5.1.1
  • 自作のテーマを使用している
  • Google ReCAPTCHA v3 ,v2どちらもダメ

調べていると、「コンタクトフォーム7をダウングレードしたら送信できるようになった!」とか、「自作のテーマを使っているためJavaScriptがなんたらかんたら…( ;∀;)」
で、良く分からないのでreCAPTCHAは諦めて、別の方法を探すことにしました。

別のスパム対策

WordPressのContact Form 7 で<textarea>内に日本語が含まれていなければエラーにする

いつも送られてくるスパムは英語のよくわからない内容のものばかりだったので、日本語が入っていないと送信できないようにする方法ってないかなと探していました。Qiitaでコピペで使える方法を紹介してくださっていたので、すぐに使用してみました!

※以下functions.phpにコピペ

//-- Contact Form 7 の <textarea> にひらがなが含まれなければエラーにする
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);

function wpcf7_validation_textarea_hiragana($result, $tag)
{
    $name = $tag['name'];
    $value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';

    if ($value !== '' && !preg_match('/[ぁ-ん]/u', $value)) {
        $result['valid'] = false;
        $result['reason'] = array($name => 'この内容は送信できません。');
    }

    return $result;
}

これを設定した結果、<textarea>(本文)内にアルファベットしかないときは送信できない様になって、日本語で送信したときはちゃんと送信されるようになりました!(^^)!自分でわからないこと(ほとんどわからない)をネットにまとめてくれている人が神様に見える(*´Д`)

↓ありがとうございましたm(__)m

参考:qiita.com

コメント

タイトルとURLをコピーしました