長く WordPress ブログを運営していると、必ずといってよいほど発生するのが「お問い合わせフォームから届く外国語のスパムメール」。
海外からバシバシ送られてくるんですよね…。
対策として画像認証やテキスト認証の導入も検討しましたが、ユーザビリティ的にはあまり良くありません。送信する側の手間が増えてしまうからです。
「なんとか日本語メールだけを受信できる方法はないものか…」
――そう思いますよね。実は、その方法があるんです!
今回は「お問い合わせフォームから送信される英語メールだけをピンポイントでシャットアウトする方法」を紹介します。
- 本記事の方法を導入した場合、英語の他、中国語、ロシア語、アラビア語など日本語以外の言語はすべてシャットアウトすることができます。
目次
Contact Form 7 お問い合わせフォーム「海外スパム対策」
以下のコードをコピーしてテーマの fanction.php に貼り付けてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//メールフォームの textarea にひらがなが無ければ送信できない(contact form7) 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)がすべて日本語以外だった場合はエラーとなり、送信できなくなります。
この仕組みを簡単に解説すると――
お問い合わせ本文には <textarea></textarea> タグが使われています。
その textarea タグ内の内容に「ひらがな」が含まれていない場合、エラーを出して送信できないようにする PHP コードです。
つまり、「ひらがなの有無」で送信可能かどうかを判別する仕組みになっています。
したがって、海外スパムのように本文がすべて外国語の場合、必ずエラーになり送信は不可能です(日本語以外の外国語はすべてブロックできます)。
なお、「エラー / この内容は送信できません。」の部分は任意の文言に変更可能です。
コードを貼り付ける際には、できるだけ「子テーマ」の function.php に貼り付けるようにしてください。親テーマはいじらないのが基本です(子テーマが無い場合はしかたありません)。
実際に WordPress のお問い合わせフォームでの使用例
お問い合わせ本文に全文英語を入れて送信ボタンを押してみると、上の画像のように自動的にエラーを吐き出してくれます。
何度送信ボタンを押しても同じです。
当ブログのお問い合わせでもこの機能を導入しているので、実際の動作を確かめてみたい方は「こちらのお問い合わせ」から本文エリアに英文をいれて試してみてください。
例の画像では「Japanese Only」とわかりやすく記載していますが、あまり正直に「日本語以外は使えません」と書いてしまうと、小賢しいスパマーが日本語を混ぜて送信してくる可能性があります。
そのため、注意書きは「送信エラーになりました」といったエラーの旨だけを表示する方が望ましいと思います。
設定後は忘れずに動作チェックを行ってくださいね
キタムラ
function.php に海外スパム対策を施したあとは、一度セルフでお問い合わせフォームから送信してみて、ちゃんと動作するかを忘れずにチェックしてくださいね!
こちらの迷惑営業の対策もあわせて設定しておくと鉄壁です
WordPress に標準搭載されている機能を活用することで、「Contact Form 7 の送信内容に特定のキーワードが含まれていた場合、送信ボタンを押したときに警告文を表示して送信をブロックする」ことができます。
禁止ワード設定というやつですね。
外国語の迷惑メールを駆除したついでに、迷惑営業メールも一緒に撃退してみませんか?
詳しい手順は以下の別記事で紹介していますので、ぜひお試しください。
本記事がお役に立ったら SNS などでシェアお願いします
WordPress のお問い合わせフォームから送られてくる全文英語のスパムメールにお悩みの方は、ぜひお試しください。
本記事の方法なら、画像認証などでユーザビリティを下げることなく、英語スパムメールを完全にブロックできるので効果てきめんです!
この記事がお役に立ったら、SNS などでシェアしていただけると嬉しいです。
というわけで、今回は「Contact Form 7 を使ってお問い合わせフォームから送信される英語メールだけをピンポイントでシャットアウトする方法」をご紹介しました。