目次
Contact Form 7に外国語スパムが届く原因
WordPressの人気プラグイン「Contact Form 7」は便利ですが、スパムメールが多いのも事実です。特に英語や中国語などの外国語スパムが頻繁に届きます。
外国語スパムが届く主な原因
- 世界中のボットが無差別に送信している
- reCAPTCHAだけでは防ぎきれない
- 日本語サイトでも日本語以外が届く
Contact Form 7スパム対策の基本
- Google reCAPTCHA(v3 / v2)の導入
- Akismetでスパムフィルタリング
- Honeypot for Contact Form 7の利用
これらの基本対策に加え、日本語以外を弾くコードを導入することで外国語スパムをほぼ完全に防げます。
functions.phpで日本語以外をブロックする方法
以下のコードをテーマの functions.php に追加してください。
// Contact Form 7 日本語以外を弾くスパム対策
add_filter('wpcf7_validate_text*', 'wpcf7_block_non_japanese', 20, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_block_non_japanese', 20, 2);
function wpcf7_block_non_japanese($result, $tag) {
$value = isset($_POST[$tag->name]) ? trim($_POST[$tag->name]) : '';
// 日本語(ひらがな・カタカナ・漢字)が含まれているか判定
if (!preg_match('/[一-龠ぁ-んァ-ヶ]/u', $value)) {
$result->invalidate($tag, "日本語で入力してください。");
}
return $result;
}
このコードを使うと、日本語を含まない送信は自動的に拒否されます。
英語・中国語など外国語スパムを効果的にブロックできます。
Contact Form 7フックでスパム対策を強化
このバリデーションは wpcf7_validate
フィルターフックを使っています。
「お名前」「お問い合わせ内容」など必須フィールドに適用すると効果的です。
- 日本語サイト → 日本語必須に設定
- 多言語対応サイト → 英語などを許可する条件分岐を追加
プラグイン「Flamingo」でスパム隔離運用
完全ブロックに不安がある場合は「Flamingo」を導入するのも有効です。
- 受信メールをデータベースに保存
- 外国語スパムを自動判別して隔離
- 誤判定があっても確認可能
Contact Form 7外国語スパム対策の注意点
- 多言語サイトでは完全ブロックより隔離運用がおすすめ
- functions.phpを編集する前に必ずバックアップを取る
まとめ
Contact Form 7に届く外国語スパムは、日本語を含まない送信を拒否するコードを追加すればほぼ完全に防げます。
基本対策(reCAPTCHA・Akismet・Honeypot)と組み合わせれば、外国語スパムから解放され、安心してフォームを運用できます。
Visited 1 times, 1 visit(s) today