Contact Form 7 海外スパム対策

Contact Form 7 海外スパム対策
WordPress学習におすすめの書籍

Amazonの読み放題サービスKindle Unlimited無料体験キャンペーン実施中!

Amazon Kindle Unlimited 公式

Contact Form 7は非常に人気のあるWordPressプラグインで、多くのウェブサイトで使用されています。しかし、スパムの問題に悩まされることも多いです。特に海外からのスパムが増えると、管理が大変になります。そこで今回は、日本語の入力を必須にすることで海外からのスパムを防ぐ方法をご紹介します。

日本語入力を必須にするカスタムバリデーション

以下のコードをテーマのfunctions.phpファイルに追加することで、日本語の文字が含まれていない入力を弾くことができます。

PHP
add_filter('wpcf7_validate_textarea',  'wpcf7_validation_textarea_japanese', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_japanese', 10, 2);

add_filter('wpcf7_validate_text',  'wpcf7_validation_textarea_japanese', 10, 2);
add_filter('wpcf7_validate_text*', 'wpcf7_validation_textarea_japanese', 10, 2);

function wpcf7_validation_textarea_japanese($result, $tag)
{
    $name  = $tag['name'];
    $value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';
    mb_regex_encoding("UTF-8");
    if ($value !== '' && !preg_match('/[ぁ-んァ-ヶー一-龠]/u', $value)) {
        $result['valid']  = false;
        $result['reason'] = array($name => 'お問い合わせ内容は日本語で入力してください。');
    }
    return $result;
}

コードの説明

  1. フィルターの追加:
    • wpcf7_validate_textarea および wpcf7_validate_text フィルターを使用して、テキストエリアとテキストフィールドにカスタムバリデーションを追加します。
    • wpcf7_validate_textarea* および wpcf7_validate_text* は必須フィールドに対して同じバリデーションを適用します。
  2. バリデーション関数:
    • フィールドの名前を取得し、$_POST から送信された値を取得します。
    • マルチバイト文字エンコーディングを「UTF-8」に設定します。
    • 入力値が空でない場合、正規表現を使用して日本語の文字(ひらがな、カタカナ、漢字)が含まれているかをチェックします。
    • 日本語の文字が含まれていない場合、バリデーションエラーを設定し、エラーメッセージを表示します。

このカスタムバリデーションを追加することで、日本語の入力を必須にし、海外からのスパムを効果的に防ぐことができます。

制作のご相談・ご依頼はこちらから!

Author

WARACRO(ワラクロ)

2018年に起業し、Webデザイナー・WebディレクターとしてWordPress案件を中心にWeb制作のお仕事をしています。
このブログでは、Webサイト制作に関する情報をお届けしています。

Webデザイン学習におすすめの講座
To Top