Wordpress tips|TAKABLOG

WordPress

ワードプレスのコンタクトフォーム7で外国からのスパムメッセージを遮断する方法

WordPressでブログを運営していると高確率で海外からのスパムメッセージが送られてきます。

ほとんどはお問い合わせページなどに設置したメールフォームからプログラムを使って自動送信されています。

しつこく延々と同じ文面のメールが送られきて本当に鬱陶しいですよね。

グーグルのreCAPTCHAを導入するという方法もありますが、ある程度のユーザビリティが損なわれることを覚悟しなければなりません。

できれば専用のサービスやプラグイン等を使わずに、海外からのスパムメールをシャットアウトしたいという方の悩みを解決します。

今回はお問い合わせフォームから送信される外国語のスパムメッセージをシャットアウトする方法を紹介します。



外国からのスパムメッセージを遮断する方法

具体的な方法を説明すると、フォームのお問い合わせ本文に日本語が含まれていない場合は送信できないようにします。

逆に日本語を入れられてしまうと送信が可能になってしまうことになりますが、海外からのスパムメッセージは人間ではなくプログラムが自動で送信しています。

ですから、日本語しか送信できない仕様になっていることがバレても、対策されて送信される確率は低いのでご安心ください。

ただ、日本語以外の言語を全てシャットアウトしてしまうため、実際に海外から問い合わせが来るようなサイトには適しません。

functions.phpをカスタマイズする手順

管理画面の左側のメニューから外観>テーマエディターを開き、左のリストからfanction.phpの編集画面を開きます。

以下のphpコードを fanction.php にコピーペーストしてください。

//-- Contact Form 7 日本語を含まない場合は送信しない
add_filter('wpcf7_validate_textarea', 'wpcf7_japanese_only', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_japanese_only', 10, 2);
function wpcf7_japanese_only($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;
}

fanction.phpの一番下の行に貼り付けて「ファイルを更新」を押して保存したら完了です。

作業はこれだけです。

とても簡単ですが効果は絶大です。

このphpコードにより、本文(<textarea></textarea> )に日本語が含まれていなければ送信エラーとなり送信できなくなります。

正確に言うとひらがなの有無で判断していますので、漢字のみの文章でも送信できなくなりますが、日本語で自然な文章をつくれば必然的にひらがなを使いますのでこれでも十分に機能します。

まとめ

この方法は簡単な作業で海外からのスパムメッセージを遮断できるのでおすすめの方法です。

  • 日本語以外の言語を全てシャットアウトする
  • プラグインや専用サービスを使わず実装できる
  • 実際に海外から問い合わせが来るサイトには適さない

私が管理するサイトで、たった一晩で7000通ものスパムメッセージがフォームから送られてきたことがありますが、この対策で1通も来なくなりました。

同じ悩みをお持ちの方はぜひお試しください。

Wordpress tips|TAKABLOG
ワードプレスのContact Form7から送信される迷惑営業メールを激減させる方法

続きを見る

コンタクトフォーム7についてはこちらから

  • この記事を書いた人

taka

ブログ初心者の方にもわかりやすい記事作成を心がけています。 副業ブログでコツコツと収益を積み重ねながら地道にサイトを作っています。

-WordPress
-,

© 2022 Taka Blog Powered by AFFINGER5