![](https://junpei-sugiyama.com/wp-content/uploads/2021/07/Question-1024x1024.png)
お問い合せフォームを設置したらほぼ確実に起こる問題がスパムメールです。
中には海外から英語だけのメールも届くこともあるので、今回はプラグインを使わずに英語だけのメールを弾く方法をご紹介していきます。
Akismet Anti-Spamというプラグインを使ったスパムメール対策については以下の記事を参照下さい。
-
【WordPress】Akismet Anti-Spamを使ってContact Form 7のスパムメール対策する方法
続きを見る
またContact Form 7の基本的な使い方については以下の記事を参照下さい。
-
Contact Form 7の基本的な使い方【WordPressお問い合わせフォームの定番プラグイン】
続きを見る
- 30日間でWeb制作を学べる
- 完全無料
- 現役エンジニアへの質問無制限
- オンラインの動画学習なので時間場所を問わず勉強可能
- 最大4回の学習サポート面談
- 受付は1日25名までの先着制
Contact Form 7で海外からの迷惑メールにスパム対策する方法
今回はプラグインを使わずに英語のみのメールを弾く方法を解説しますが、その方法はfunctions.phpにコードを追記となります。
とは言ってもWordPressのオリジナルテーマ制作でもやっていないと分からないと思うので、画像で解説していきます。
もちろんテンプレートファイルを直接編集出来る方はそちらの方法でもOKです。
まずは管理画面の『外観 → テーマファイルエディター』を開きます。
![WordPress管理画面:外観 → テーマファイルエディター](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention01.jpg)
WordPress管理画面:外観 → テーマファイルエディター
すると初回のみこちらの注意文がポップアップされるので『理解しました』をクリックします。
![テーマファイルエディター初回クリック時に表示](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention03.jpg)
テーマファイルエディター初回クリック時に表示
テーマファイルエディターを開いたら、右側のテーマファイルにある『functions.php』を開きます。
![テーマファイルエディター:functions.phpを開く](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention02.jpg)
テーマファイルエディター:functions.phpを開く
そして『functions.php』の中にこの後ご紹介するコードを追記します。
コードを追記する位置に決まりはありませんが、分かりやすいように一番下あたりに書くといいでしょう。
![テーマファイルエディター:functions.php](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention04.jpg)
テーマファイルエディター: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にコード追記](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention05.jpg)
テーマファイルエディター:functions.phpにコード追記
あとは忘れずに下の『ファイルを更新』をクリックしましょう。
送信確認
あとは先ほど追記したコードが正常に機能しているか確認します。
ひらがなが含まれている場合と、英語のみの場合で見比べてみます。
ひらがなが含まれている場合
入力欄はこのようにしてみます。
![お問い合わせフォーム:ひらがな含む場合](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention06.jpg)
お問い合わせフォーム:ひらがな含む場合
これで送信ボタンをクリックするとこのようにメッセージが表示されます。
![送信成功メッセージ](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention07.jpg)
送信成功メッセージ
上記はひらがなが含まれているので問題なく送信できました。
英語のみの場合
次は英語のみで送信テストをします。入力欄はこのようにしてみます。
![お問い合わせフォーム:英語のみの場合](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention08.jpg)
お問い合わせフォーム:英語のみの場合
この状態で送信ボタンをクリックするとこのように表示されます。
![お問い合わせフォーム:送信失敗](https://junpei-sugiyama.com/wp-content/uploads/2022/05/contact-form-7-overseas-spam-prevention09.jpg)
お問い合わせフォーム:送信失敗
送信ボタンの上に自分で追記したエラーメッセージが表示されればOKです。
その下のオレンジ枠のメッセージは『Contact Form 7』の自動エラーメッセージです。
注意ポイント
まとめ
今回はContact Form 7で海外からの迷惑なスパムメールを対策する方法を解説しました。
セキュリティ対策はなるべく早めにやっておきたいですね。
以上になります。
-
必要か不要か?無料でも使える『Akismet Anti-Spam』の設定方法【WordPressプラグイン スパム対策】
続きを見る
-
【WordPress】Akismet Anti-Spamを使ってContact Form 7のスパムメール対策する方法
続きを見る
-
WordPressのスパム対策『reCAPTCHA(v3)』とは?【Contact Form 7の設定方法も解説】
続きを見る
![](https://junpei-sugiyama.com/wp-content/uploads/2021/07/Joy-1024x1024.png)