当サイトはプロモーションを含みます。

【ブログ】Contact Form 7の英語スパムを防ぐ方法|ひらがな必須で簡単対策

目安時間 12分

当記事はアフィリエイト広告を利用しています。

 

Contact Form 7を使っていると、突然英語やランダムな英字ばかりのお問い合わせが大量に届くことがあります。

私のサイトでも、意味の分からない英字が並んだスパムが何度も送られてくるようになりました。

毎日のように届くと、本当に必要なお問い合わせが埋もれてしまうので困りますよね。

そこで行ったのが、Contact Form 7のお問い合わせ内容に「ひらがなを1文字以上含めなければ送信できない」という条件を追加する方法です。

日本人向けのブログやWebサイトなら、この方法だけでも英字のみのスパムをかなり減らすことができます。

しかも、Code Snippetsなどのプラグインを新しく追加する必要はありません。

この記事では、子テーマのfunctions.phpを使ってContact Form 7の英語スパムを防ぐ方法を、できるだけ分かりやすく紹介します。

Contact Form 7に大量の英語スパムが届く

Contact Form 7を設置していると、海外からと思われる英語のお問い合わせが大量に届くことがあります。

例えば、次のような内容です。

 

普通のお問い合わせとは思えない英単語やURLが並んでいる場合、自動プログラムによって送信されているスパムの可能性があります。

日本人向けのサイトの場合、正規のお問い合わせには「です」「ます」「ください」など、何らかのひらがなが入っていることがほとんどです。

そこで、「お問い合わせ本文にひらがなが1文字も入っていなければ送信できない」というルールを追加します。

これだけでも、英字だけで構成された単純なスパムをかなり弾くことができます。

Contact Form 7で「ひらがな必須」にする方法

今回は、WordPressの子テーマにあるfunctions.phpへコードを追加します。

SWELLを使っている場合は、親テーマではなくSWELL子テーマのfunctions.phpを使用してください。

一般的には、次の場所にあります。

/wp-content/themes/swell_child/functions.php

 

functions.phpを開いたら、一番下に次のコードを追加します。

追加するコード

// Contact Form 7:お問い合わせ本文に「ひらがな」が含まれているかチェック
function validate_textarea_hiragana($result, $tag) {

$name = $tag->name;

// お問い合わせ本文だけを対象にする
if ($name !== 'your-message') {
return $result;
}

$value = isset($_POST[$name])
? sanitize_textarea_field(wp_unslash($_POST[$name]))
: '';

if ($value && !preg_match('/[ぁ-ん]/u', $value)) {
$result->invalidate(
$tag,
'お問い合わせ内容には、ひらがなを1文字以上含めてください。'
);
}

return $result;
}

add_filter(
'wpcf7_validate_textarea',
'validate_textarea_hiragana',
10,
2
);

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

 

 

コードを追加したら、functions.phpを保存します。

これで基本的な設定は完了です。

「your-message」は自分のContact Form 7に合わせる

ここで必ず確認してほしいのが、コード内にある「your-message」という部分です。

該当するのは、次の部分です。

if ($name !== 'your-message') {

「your-message」は、Contact Form 7のお問い合わせ本文に設定されているフォームタグの名前です。

WordPress管理画面から、「お問い合わせ」→「コンタクトフォーム」→使用しているフォームを開いてください。

お問い合わせ本文の欄を確認します。

例えば、次のようになっている場合です。

Contact Form 7側の例

[textarea* your-message]

この場合は、先ほどのコードをそのまま使用できます。

一方、次のようになっている場合は変更が必要です。

フォームタグ名が異なる例

[textarea* message]

この場合は、コード内の「your-message」を「message」へ変更してください。

重要

Contact Form 7側のテキストエリア名と、functions.php側の名前を必ず一致させてください。

ひらがなが入っていないと送信できなくなる

設定が完了したら、実際にお問い合わせフォームで確認してみましょう。

例えば、お問い合わせ内容に次の文章を入力します。

送信できない例

Hello! I want to contact you.

この文章には、ひらがなが1文字も含まれていません。

そのため、送信しようとするとエラーになります。

表示されるエラーメッセージ

お問い合わせ内容には、ひらがなを1文字以上含めてください。

一方、次のような文章なら正常に送信できます。

送信できる例

商品の詳細について教えてください。

「ください」というひらがなが含まれているため、送信できます。

実装後は必ず送信テストをする

functions.phpを変更したあとは、必ず実際のお問い合わせフォームから送信テストをしてください。

最低でも、次の2パターンを確認しておきます。

  • 英字だけを入力した場合 → エラーになって送信できない
  • ひらがなを含む日本語を入力した場合 → 正常に送信できる

日本語のお問い合わせまで送信できなくなっている場合は、Contact Form 7のフォームタグ名を確認してください。

特に「your-message」の部分が正しいかをチェックします。

親テーマのfunctions.phpには書かない

WordPressテーマのfunctions.phpにコードを追加するときは、できるだけ親テーマを直接編集しないようにしてください。

親テーマをアップデートすると、追加したコードが消えてしまう可能性があります。

SWELLを使用している場合は、SWELL子テーマのfunctions.phpへ追加します。

注意

functions.phpは、記述を間違えるとWordPressでエラーが発生することがあります。

編集する前に、元のfunctions.phpをコピーして保存しておくと安心です。

Code Snippetsなどのプラグインを使う方法もある

functions.phpを直接編集するのが不安な場合は、Code Snippetsなどのコード管理用プラグインを使う方法もあります。

コードをプラグイン側で管理できるため、functions.phpを直接編集する必要がありません。

ただし、すでに子テーマを使用していてfunctions.phpを編集できるのであれば、今回の対策だけのために新しいプラグインを追加する必要はありません。

プラグインをできるだけ増やしたくない場合は、子テーマのfunctions.phpを使う方法がシンプルです。

この方法ですべてのスパムを防げるわけではない

ひらがな必須の設定は簡単で効果的ですが、すべての迷惑メールを完全に防げるわけではありません。

例えば、スパム本文に「あ」や「です」などのひらがなが含まれていれば、今回のチェックを通過する可能性があります。

この対策が特に有効なスパム

英字・英単語・URLだけで送られてくる単純な海外スパムや自動送信スパムです。

つまり、今回の方法は「英字だけで送られてくる大量の自動スパムを減らす対策」と考えると分かりやすいです。

さらに高度なスパムが増えてきた場合は、Cloudflare Turnstileなど別のスパム対策との併用も検討するとよいでしょう。

海外ユーザーから問い合わせがあるサイトは注意

今回の設定には、一つ大きな注意点があります。

ひらがなを必須にすると、英語だけで書かれた正規のお問い合わせも送信できなくなります。

そのため、海外ユーザーからのお問い合わせを想定しているサイトには向いていません。

例えば、次のようなサイトでは注意が必要です。

  • 海外向けの商品やサービスを扱っている
  • 外国人ユーザーから問い合わせがある
  • 英語版ページを運営している
  • 海外企業との取引がある

反対に、ほぼ日本人しか利用しない個人ブログや日本国内向けサイトなら導入しやすい方法です。

Contact Form 7の英語スパム対策は「ひらがな必須」が簡単

Contact Form 7から大量の英語スパムが届く場合は、お問い合わせ本文にひらがなを1文字以上必須にする方法があります。

今回紹介した方法なら、新しいスパム対策プラグインを追加しなくても設定できます。

メリットをまとめると、次のとおりです。

  • 英字だけで送られてくるスパムをブロックできる
  • Contact Form 7のバリデーションを利用できる
  • 新しいプラグインを追加しなくてもよい
  • 子テーマのfunctions.phpにコードを追加するだけ
  • 日本語ユーザー向けサイトと相性がよい

私の場合も、意味のない英字が並んだお問い合わせが大量に届いたことがきっかけで対策することにしました。

同じようにContact Form 7の海外スパムや英語スパムに困っている方は、今回の方法を試してみてくださいね🌸

 

▼メルマガのお申し込みはこちらから
上記のメールマガジンバックナンバーを読んで
このメルマガの購読価値があると思われた場合には
以下より購読をお申し込み頂けます。

この記事に関連する記事一覧

プロフィール
むらさき プロフィール画像

むらさき
フルタイム勤務・3児ママのブログ運営者

限られた時間の中で、アドセンス×楽天・Amazonを組み合わせた
「伸びたところを育てるブログ運営」を実践しています。

現在は月8万円ほどの収益。
気合や根性ではなく、ムダを減らす設計と時短の仕組みで続けています。

このブログでは、
・収益が伸び悩む原因の整理
・5桁で止まる人がやりがちなNG行動
・実際に使った穴場キーワード
・1日30分〜でも回る作業の考え方
を実体験ベースでまとめています。

カテゴリー