Contact Form 7 のお問い合わせにスパムメールが来ないようにする方法

スパムメール対策はいろいろしているのですが、それでもかいくぐってスパムメールが届くときがあります。月曜日の朝にメールを開けたときにお問い合わせに複数のスパムメールがきているとへこみますよね😅。ちょうど今日そういうことがあったので、対策をしてみました。

今回のスパムメールの内容

今回のスパムメールは2日間にわたって、13通届いていました。朝見たときは数分前に最新のメールが届いていたので対策を講じなかったらそのまま届き続けていたはずです。

スパムメールの内容はこのようなものでした。

お名前欄に長い英文と、bit.ly(URLを短縮するサービス)を使ったURLが貼り付けてありました。また、お問い合わせ内容には日本語が書いていませんでした。

ゆーそうとにお問い合わせをいただく場合、

  • 名前がこのように長くなることはない
  • お問い合わせ内容に日本語がない、ということはない

ですので、これらをチェックできるようにしてみました。

contact form 7 名前欄の長さを制限する

名前欄の長さを制限してみました。ダッシュボード>お問い合わせ 編集で

このように長さを50まで、と制限を入れてみました。この状態で先ほどの名前をコピペすると

このように途中までしか入らなくは、なりました😅。とりあえず長い名前は防げたってところです。

contact form 7 本文に日本語が入らなければエラーにする

名前の制御だけだと防ぐということはできませんでした。しかし本文に日本語が入らなければ送信することはできなくなる、という変更をしたいと思います。

子テーマのfunctions.phpに

function is_japanese($string) {
    return preg_match('/\p{Han}|\p{Hiragana}|\p{Katakana}/u', $string);
}

add_filter('wpcf7_validate_textarea', 'check_japanese_text', 10, 2);
add_filter('wpcf7_validate_textarea*', 'check_japanese_text', 10, 2);

function check_japanese_text($result, $tag) {
    $type = $tag['type'];
    $name = $tag['name'];

    $value = isset($_POST[$name]) ? trim(wp_unslash(strtr((string) $_POST[$name], "\n", " "))) : '';

    if (!is_japanese($value)) {
        // エラーメッセージを設定します。
        $result->invalidate($tag, '本文には日本語を含めてください。');
    }

    return $result;
}

このようにコードを入れました。そうすると、

このようにお問い合わせ内容、の下に「本文には日本語を含めてください。」というメッセージが出るとともに、送信ボタンをクリックしても「入力内容に問題があります。確認して再度お試しください。」とメッセージが表示されメールは送信されなくなります。

contact form 7 カスタマイズする際の注意点

今回はこのようにカスタマイズを行いましたが、長さのチェックを追加するには contact form 7 のショートコード欄に入力をする必要があります。また、子テーマになっていなかったり、functions.phpをいじるのは慣れていないとできないこともあるかと思います。

そのような場合は是非ゆーそうとの WordPress・ITスポット対応 をご利用いただければと思います😄。お問い合わせ時にはこのブログのタイトルなどお知らせいただければ素早い対応が可能です。

ホームページの新規作成・リニューアルで
お困りの担当者様へ

WordPressの機能を活かして運用しやすいホームページを作成

せっかくのWordPressなのに「自分で文章が書き換えられない」「ブログの更新ができない」などWordPressの機能を活かしきれていないことはありませんか?

ゆーそうとではWordPressの機能を最大限発揮して、HTMLなどの知識がないお客様でも運用しやすいホームページを作成します。

この記事のご依頼・お問い合わせの方はこちら