ContactForm7 で日本語以外の入力を制限する方法

,

最近迷惑メールが多いとの依頼があり、以下の3つの実装方法を検討しました。

  • フォーム内に入力必須のチェックボックス(例えば、送信に関して同意を求めるようなチェック)を加える。
  • CAPTCHA(画像)認証、またはreCAPTCHA認証を追加する。
  • 件名、本文に日本語が1文字も含まれない場合、送信出来ないようにする。

で、今回はユーザーの負担が少なく、外国語の迷惑メールのみ制限できればということだったので、件名と本文に日本語が含まれているかをチェックするようにしてみました。

/*-------------------------------------------*/
/* コンタクトフォームの日本語チェック(タイトルと本文)
/*-------------------------------------------*/
function wpcf7_validate_jpn_check( $result, $tag ) {
    $val1 = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-subject']));
    $val2 = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
    if (!empty($val1)) {
        if (!preg_match('/[ぁ-ん]+|[ァ-ヴー]+|[一-龠]/u', $val1)) {
            $result['valid'] = false;
            $result['reason'] = array('your-subject' => '日本語で入力してください。');
        }
    }
    if (!empty($val2)) {
        if (!preg_match('/[ぁ-ん]+|[ァ-ヴー]+|[一-龠]/u', $val2)) {
            $result['valid'] = false;
            $result['reason'] = array('your-message' => '日本語で入力してください。');	
        }
    }
    return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_jpn_check', 10, 2 );

まだ検証中ですが、多分これでいけると思います。

自己紹介

松田 大と申しますm(_ _)m
インディーズでミュージシャンをやっていたのですがいつのまにか…

とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。

「Excel VBA」からスタートして、Yamaha RTX シリーズで VPN環境構築、Hyper-V環境構築、Windowsアプリ開発などを経験した後、「 WordPress 」に出会い、どっぷりハマっています。

現在勤めているETBS合同会社では、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。

現在、代表兼二児のパパ。子育てを通じて、こどもたちにもプログラミングの楽しさに触れてほしいと思うようになり、「 こどもICTかつしか教室 」を開講中。最近は童心に帰り、簡単なゲーム制作なんかも楽しんでいます(^_^)。

コメントを残す

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

ビジュアルプログラミング オンライン無料体験レッスン モニター大募集
こどもICTかつしか教室 | 幼稚園年長 小学生 中学生 スクラッチ ビジュアルプログラミング
WordPress で困ったら? | 必要なときに必要な分だけ、お助けサポート
WordPress / PHP なんでも相談OK