▶ Amazon 今日の【在庫処分】セール会場へ
スポンサーリンク

ページにプロモーションが含まれる場合があります。

Contact Form 7のスパム対策|日本語以外の海外メールをお問い合わせフォームで拒否する方法 

スポンサーリンク
初心者
ブロガー

ブログのお問い合わせフォーム経由で海外から迷惑メールが届いて困ってます。
何か防ぐ方法ってありますか?

お問い合わせフォームの定番プラグイン、Contact Form 7(コンタクトフォーム7)

Contact Form 7 公式ページ

Contact Form 7 公式ページ

サイトに「お問い合わせ」の設置は必須ですが、海外からメールが届いてうっとおしいと感じている人もいるかと思います。

ここでは、

日本語以外のメール(海外からのメール)を判別して、お問い合わせフォームで送信できないようにする方法をご紹介します。

この方法はプラグインを使わない代わりにWordPressの「functions.php」というファイルを編集しますが、コピペで完了するので初心者でもOKです。

参考 Contact Form 7の迷惑スパムメールをプラグインなしで撃退する | 神戸Tシャツ製作所

※Cocoonテーマを例にしますが、他テーマでも「functions.php」を編集すれば同じです。(SWELLテーマでも確認済み)

 

Contact Form 7:日本語が無いメールをお問い合わせフォームで拒否する functions.php コード

infofunctions.php の編集に慣れていない人は、事前にバックアップを取るなどの安全処置を行ってから実施してください。

参考 【初心者向け】おすすめのWordPressバックアップ方法とは?簡単なバックアップの設定方法を解説 | 初心者のためのブログ始め方講座

 

(1)WordPressダッシュボードにログインし左メニューの「外観」>「テーマファイルエディター」を選択します。

テーマファイルエディターへ

テーマファイルエディターへ

 

(2)「編集するテーマを選択」を「Cocoon Child」にして「Theme Functionsfunctions.php)」を選択します。

functions_phpを開く

functions_phpを開く

 ↓ 

functions_phpの編集モード

functions_phpの編集モード

(3)テーマ編集のタイトルが「Cocoon Child: Theme Functions (functions.php)」になったことを確認し、編集エリアに下記のコードをコピペして下さい。
※すでに他のコードがあっても、その下に貼り付ければOKです。

 // Contact Form 7 スパムメール対策(本文に日本語が含まれていない場合はエラーを返す)
function wpcf7_validate_spam_message( $result, $tag ) {
$value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
if (!empty($value)) {
if (preg_match('/^[!-~]+$/', $value)) {
$result['valid'] = false;
$result['reason'] = array('your-message' => 'エラー:この内容は送信できません');
}
}
return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_spam_message', 10, 2 );

 ↓ 

functions_phpにスパム対策コードを貼り付け

functions_phpにスパム対策コードを貼り付け

HINTちなみに、コンタクトフォームの編集をイジってない人は関係ないですが、HTMLの「your-message」が違う場合はそれに合わせてコードを改変する必要があります。

コンタクトフォームの編集画面

コンタクトフォームの編集画面

 ↓ 

「your-message」を確認

「your-message」を確認

 

(4)コードを貼り付けできたら「ファイルを更新」で変更を保存します。

CSS_ファイルを更新

コード編集の作業はこれで完了です。functions.php の画面は閉じて下さい。

infofunctions.php にコードを追加したら、サイトのデザイン不具合が発生していないか確認してください。
他のプラグインやCSSコードとの相性もあるので、もしデザイン崩れなどがある場合今回のコードは削除し採用を見送ってください。
 

日本語なしを拒否するか「お問い合わせフォーム」で確認する

functions.php に追加した対策コードが、ちゃんと機能するか必ず自分でテストしましょう。

  1. メッセージ本文が英語だけ(スパム)のお問い合わせ
  2. メッセージ本文に日本語が含まれている(通常の)お問い合わせ

 

それぞれ実施し、❶は拒否され、❷は送信できるか確認します。

スパム対策の確認テスト

スパム対策の確認テスト

メッセージ本文に日本語が一文字でもあれば送信されます。

ちなみに「氏名」や「題名」は判定の対象外なので英語でも日本語でも関係ありません。

あくまで「メッセージ本文」の内容を判定しています。

 

これで海外からの迷惑なスパムメールは、お問い合わせフォームでほとんど防げるようになると思います。

以上です、最後までお読みいただきありがとうございました。

関連 お問い合わせフォームの必須・任意を変更する方法|Contact Form 7

関連 reCAPTCHA の導入と Contact Form 7 への連携方法|スパム対策

コメント

タイトルとURLをコピーしました