【Contact Form 7】WordPress問い合わせフォームからの海外スパムメール対策

WordPressを運営している中で、「問い合わせフォームから海外からのスパムメールが送られて来て困っている!」という方は多いのではないでしょうか?

かくいう私も、少し前から何語かよくわからん謎のURL付きスパムメールがガンガン送られてくるようになりました。
無視すればいい話なんですけど、削除する時に間違ってURL踏んでしまったら危ないし、ちゃんとした問い合わせを見逃してしまうかもしれないし、何より単純に気分悪いし!

ということで、対策を取りました。
「ContactForm7」を使って問い合わせフォームを設置していて、海外スパムメールに困っている方はぜひ参考にしてみてくださいませ。

所定のコードを「fanction.php」に貼る。たったこれだけ!

いろいろと調べてみると、「問い合わせ本文にひらがなが入っていない場合は送信できないようにする」という方法がスタンダードのよう。
日本語のちゃんとした問い合わせならひらがなが入っていないことはないので、この方法でしっかりと防げそうです。

ちなみに、海外からの問い合わせも受け付けているサイトではこの方法を取ることはできないので、ご注意を。

私はこちらの記事に書かれているコードを使わせていただきました。(ネットには困った時に助かる情報がたくさんある……本当にありがたい……)

上記記事に書かれているコードをコピーして、「fanction.php」に張り付けるだけでOK。

なお、記事内には、

日本語でも「10文字以下」だとエラーになるように設定しています。短い言葉で誹謗中傷を送ってきたりする輩もいますので、そういったものへの対策にもなります。

とあるのですが、10文字以下のひらがなで試したところ、送信できてしまいました……。

ただ、ひとまず海外スパムメールが防げればよかったので、個人的には問題ないかなと思っています。

「fanction.php」ってどこにあるの?

「fanction.php」は、テーマファイルの中にあります。

「fanction.php」の場所
wp-content>themes>各テーマファイル(子テーマを使っている場合はそちら)
※テーマによっては「functions.php」の場合もあります。

「fanction.php」内にはすでにコードが記述がされているかと思いますが、一番下に追加すればOKです。




「fanction.php」に記述する際は文字コードに注意!

私はロリポップのサーバーを使用していて、ロリポップのFTPから編集をしましたが、「fanction.php」の文字コードが最初「ASCII」になっていました。
「ASCII」は日本語に対応していないので、そのままコード張り付け→保存をしたら文字化けしてしまいました。

ロリポップFTPの画面。本来日本語の部分が「???」に文字化けしています

「fanction.php」にコピペしたコードには、フォームで「ひらがな0文字」で送信した際に表示されるエラー文言が書かれています。そちらも文字化けしてしまっているので、フォームで「aaa」を入力して送信チェックをしてみると、こんな状態に。

最初文字コードのことに気づかず「えええ?!?!?!」と混乱しましたが、再度コードをコピペ→文字コードを「UTF-8」に変更して保存。

これで、フォーム送信画面でもちゃんとエラー文言が表示されるようになりました。

海外スパムメール対策|注意点

テーマを変更したら再度設定が必要

テーマ内にあるファイルに記述しているので、テーマを変えた場合は再度設定が必要です。
実は先日テーマ変更をしたのですが、海外からのスパムメールが届いてしまい、設定し直すのを忘れていたことに気付きました。で、せっかく設定するなら記事として残しておこうと思い、この記事を書くことにしました。

不慣れな方は、作業前にできればバックアップを

作業の際、元の記述をいじってしまわないように気をつけてください。
また文字コードを変えるとファイルが壊れる可能性もゼロではないようなので、自己責任でお願いします。

作業する前に、もともと「fanction.php」コードに記載されていた内容をコピーして、バックアップとしてどこかに保存しておくといいかもしれません。
「作業中に猫がキーボードの上に乗ってきてコードがぐちゃぐちゃに!」とかもあり得ますからね。まぁ猫じゃなくても手元が狂うことはあるので……。

ということで、海外スパムメール対策についてでした!