セキュリティ WordPress

【Contact Form 7】海外からの迷惑なスパムメール対策方法【プラグイン不要】

2022年5月15日

※ 当サイトではアフィリエイト広告を利用しています

Contact Form 7で作ったお問い合せフォームからめっちゃ英語のメールが届くけどどうにかならない?

お問い合せフォームを設置したらほぼ確実に起こる問題がスパムメールです。

中には海外から英語だけのメールも届くこともあるので、今回はプラグインを使わずに英語だけのメールを弾く方法をご紹介していきます。

Akismet Anti-Spamというプラグインを使ったスパムメール対策については以下の記事を参照下さい。

あわせて読みたい
【WordPress】Akismet Anti-Spamを使ってContact Form 7のスパムメール対策する方法
【WordPress】Akismet Anti-Spamを使ってContact Form 7のスパムメール対策する方法

続きを見る

またContact Form 7の基本的な使い方については以下の記事を参照下さい。

あわせて読みたい
Contact Form 7の基本的な使い方【WordPressお問い合わせフォームの定番プラグイン】
Contact Form 7の基本的な使い方【WordPressお問い合わせフォームの定番プラグイン】

続きを見る

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
  • 完全無料
  • 30日間でWeb制作を学べる
  • 現役エンジニアへの質問無制限
  • オンラインの動画学習なので時間場所を問わず勉強可能
  • 最大4回の学習サポート面談
  • 毎日人数制限ありの先着制
無料なのに専属のメンターが付き、現役エンジニアへの質問も無制限という破格のサービスです。いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

Contact Form 7で海外からの迷惑メールにスパム対策する方法

今回はプラグインを使わずに英語のみのメールを弾く方法を解説しますが、その方法はfunctions.phpにコードを追記となります。

とは言ってもWordPressのオリジナルテーマ制作でもやっていないと分からないと思うので、画像で解説していきます。

もちろんテンプレートファイルを直接編集出来る方はそちらの方法でもOKです。

まずは管理画面の『外観 → テーマファイルエディター』を開きます。

WordPress管理画面:外観 → テーマファイルエディター

WordPress管理画面:外観 → テーマファイルエディター

すると初回のみこちらの注意文がポップアップされるので『理解しました』をクリックします。

テーマファイルエディター初回クリック時に表示

テーマファイルエディター初回クリック時に表示

テーマファイルエディターを開いたら、右側のテーマファイルにある『functions.php』を開きます。

テーマファイルエディター:functions.phpを開く

テーマファイルエディター:functions.phpを開く

そして『functions.php』の中にこの後ご紹介するコードを追記します。

コードを追記する位置に決まりはありませんが、分かりやすいように一番下あたりに書くといいでしょう。

テーマファイルエディター:functions.php

テーマファイルエディター:functions.php

上記の場合は642行目が最後になるので、643行目以降に書きます。

 

functions.phpにコードを追記

それでは本題となる追記するコードはこちらです。

// 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;
}

これを先ほどの『functions.php』に入れるとこうなります。

テーマファイルエディター:functions.phpにコード追記

テーマファイルエディター:functions.phpにコード追記

あとは忘れずに下の『ファイルを更新』をクリックしましょう。

 

送信確認

あとは先ほど追記したコードが正常に機能しているか確認します。

ひらがなが含まれている場合と、英語のみの場合で見比べてみます。

 

ひらがなが含まれている場合

入力欄はこのようにしてみます。

お問い合わせフォーム:ひらがな含む場合

お問い合わせフォーム:ひらがな含む場合

これで送信ボタンをクリックするとこのようにメッセージが表示されます。

送信成功メッセージ

送信成功メッセージ

上記はひらがなが含まれているので問題なく送信できました。

 

英語のみの場合

次は英語のみで送信テストをします。入力欄はこのようにしてみます。

お問い合わせフォーム:英語のみの場合

お問い合わせフォーム:英語のみの場合

この状態で送信ボタンをクリックするとこのように表示されます。

お問い合わせフォーム:送信失敗

お問い合わせフォーム:送信失敗

送信ボタンの上に自分で追記したエラーメッセージが表示されればOKです。

その下のオレンジ枠のメッセージは『Contact Form 7』の自動エラーメッセージです。

注意ポイント

英語のみ以外にもひらがなが含まれていなければエラーの対象となります。

まとめ

今回はContact Form 7で海外からの迷惑なスパムメールを対策する方法を解説しました。

セキュリティ対策はなるべく早めにやっておきたいですね。

以上になります。

あわせて読みたい
必要か不要か?無料でも使える『Akismet Anti-Spam』の設定方法【WordPressプラグイン スパム対策】
必要か不要か?無料でも使える『Akismet Anti-Spam』の設定方法【WordPressプラグイン スパム対策】

続きを見る

あわせて読みたい
【WordPress】Akismet Anti-Spamを使ってContact Form 7のスパムメール対策する方法
【WordPress】Akismet Anti-Spamを使ってContact Form 7のスパムメール対策する方法

続きを見る

あわせて読みたい
WordPressのスパム対策『reCAPTCHA(v3)』とは?【Contact Form 7の設定方法も解説】
WordPressのスパム対策『reCAPTCHA(v3)』とは?【Contact Form 7の設定方法も解説】

続きを見る

関連記事Contact Form 7 関連記事一覧

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-セキュリティ, WordPress
-