WordPress

【スパム対策】Contact Form 7で英語のみの入力はエラーにする方法

WordPressのサイトの場合、「Contact Form 7」などのプラグインを使ってお問い合わせフォームを比較的簡単に実装することができますが、お問い合わせフォームからスパムメールが来ることもあるかと思います。

「Contact Form 7」はよく使われているプラグインだけに、狙われやすいというのもあるかもしれません。

営業や宣伝などの迷惑メールもありますが、中には海外からのスパムも多くあります。

プラグインのバージョンを最新に保つとともに、しっかりとしたスパム対策を行うことが重要ですが、海外からのスパム対策の一つとして、お問い合わせの入力において日本語(ひらがな)が含まれているかどうか判定し、含まれていない場合は送信できないようにする方法を紹介します。

英語(外国語)のみの入力はエラーにする

海外スパムの多くは、英語のみの内容であることも多いため、お問い合わせの入力が英語のみで、日本語(ひらがな)が含まれていない場合はエラーになるようにしてみます。

functions.phpに以下のように記述すればOKです。

function wpcf7_validate_textarea($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;
}
add_filter(‘wpcf7_validate_textarea’, ‘wpcf7_validate_textarea’, 10, 2);
add_filter(‘wpcf7_validate_textarea*’, ‘wpcf7_validate_textarea’, 10, 2);

※上記コードには全角スペースが含まれているのでコピペして使う際はご注意ください。

これだけで、お問い合わせの本文(textarea)が英語のみの文章かどうかチェックすることができ、英語のみでひらがなが含まれない場合は「日本語で入力してください」というエラーが出ます。

スパム対策としては不十分かも

今回紹介した方法は、あくまでお問い合わせ内容の文章が英語のみかどうか判別しただけで、これをしたからといってスパム対策が完全にできているとは言えません。

むしろ対策としては緩いかと思います。

海外からのスパムが多く、届くメールの内容が英語ばかりの場合はこの方法を試してみて、来なくなったらひとまずはいいかもしれませんが、それでも改善されない時や違った形でスパムメールが届く場合は、他のスパム対策をしっかり行うようにした方がいいです。

「Akismet」というプラグインを使う方法やreCAPTCHAを設定する方法など色々ありますので、試してみてください。

WordPressを始めるならエックスサーバーがおすすめ

WordPressでブログやアフィリエイトを始めたい、良いレンタルサーバーに乗り換えたいという方にはエックスサーバーがおすすめです。

その理由は以下の通り。

  • 国内シェアNo.1のレンタルサーバー
  • サポートの品質が高い
  • 表示速度・処理速度が速い

WordPressが学べるおすすめのスクール

WordPress関連の本もありますし、ネット上にはたくさんの情報がありますが、短期間でWordPressも含めたWeb制作のスキルを身につけたい方にはプログラミングスクールがおすすめです。

TechAcademy

  • WordPressのサイト制作の流れが理解できる
  • WordPressでオリジナルサイトが作れるようになる
  • プラグインやカスタムフィールドを学べる
  • オンラインで完結
  • 講師・メンターが現役エンジニア

関連記事
WordPressが学べるおすすめのプログラミングスクール

Leave a Comment