WordPressのコンタクトフォーム7で日本語を含まない文章の送信をさせないように「functions.php」をカスタマイズ

「functions.php」をカスタマイズWordPressのコンタクトフォーム7は優秀なプラグインである。しかし、最近とくに英文のみのスパムメールが急増して困っていた。「Akismet」を使えばスパム問題を解決できそうだが、商用サイトでは無料で使えない。Googleの「reCAPTCHA」を使う方法もよさそうだったが、自分のサイトでない場合には設定が面倒そうである。
そこで、今回はWordPressの「functions.php」をカスタマイズして日本語のひらがなを含まない文章の場合は送信ができないようにした。

「functions.php」をカスタマイズして日本語を含まない文章は送信できなくする

WordPressの「functions.php」は、/wp-includesフォルダに入っている重要なファイルなので、カスタマイズする場合は必ずバックアップをとってから行うこと。

エディタで「functions.php」を開き、最末尾に以下のソースを貼り付け、FTPでアップロードするだけでOK。

カスタマイズは以下のようにした。

contact7kaizouengng.jpg

▼実際に使用したソース

//-- Contact Form 7 英語のみの投稿は送信できない
add_filter('wpcf7_validate_textarea', 'ktzw3', 10, 2);
add_filter('wpcf7_validate_textarea*', 'ktzw3', 10, 2);
function ktzw3($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;
}

英文だけで入力し「送信」をクリックすると、「日本語で入力おねがいします」と警告が表示される。さらにフォーム下部に「入力内容に問題があります。確認して再度お試しください。」と表示され、送信することができなくなる。

▼実装したコンタクトフォーム
https://sindan.org/contactform/

参考にした記事は以下のとおり

https://contactform7.com/ja/spam-filtering-with-akismet/

https://kodocode.net/wordpress-plugin-contactform-secure/

https://tomozo-music.net/html/2019/スパム対策-contact-form-7-英語のみ、日本語が含まれていな/

今のところうまくいっているようである。しばらくこれで様子を見ることにする。

このエントリーをはてなブックマークに追加 遠田幹雄のLINE@アカウントを友だち追加  

この記事を書いた人

中小企業診断士:遠田幹雄の顔写真遠田 幹雄(とおだ みきお)
 
経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係るコンサルティング活動を展開しています。民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者
 
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。


この記事のURL「https://dm2.co.jp/2020/01/functionsphp.html」をQRコードで表示
この記事のURL「https://dm2.co.jp/2020/01/functionsphp.html」をQRコードで表示「https://dm2.co.jp/2020/01/functionsphp.html」
パソコンで表示されたページをスマホでも見たい場合は、このQRコードをスマホのカメラ(QRコードが読めるリーダー)で読むとページが表示されます。