Contact Form 7 スパムメール対策「ひらがなを含まないと送れません」

ある日、お客様からの緊急SOS。「全部英文のメールがじゃんじゃん来て通知が止まらない!」

内容を確認したところ、名前が英文(URL付き)で件名と本文は空欄でした。まず本文を必須項目に。お問い合わせ内容も、日本語以外はお断りしておくことにして、「本文に日本語(ひらがな)が無いと送れないようにするには…検索っと」

Tanweb.net さんの「Contact Form 7 海外からのスパム対策!お問い合わせ本文が全て英語の場合は送信できないようにする」という記事からソースを使わせて頂きました。

下記のコードを fanction.php に貼り付け。エラー文は任意のテキストに変えられるとのことなので、実装時に変更しました。

code

//メールフォームの textarea にひらがなが無ければ送信できない(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;
}

結果、毎分3通くらい届いていたスパムメールがピタッと止まりました。良かったー…必須項目もちゃんと確認しておかないとダメですね…

参考 Contact Form 7 海外からのスパム対策!お問い合わせ本文が全て英語の場合は送信できないようにするTanweb.net

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください