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-英語のみ、日本語が含まれていな/

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


このページはTwitter、はてな、Google+、FacebookなどのSNSで以下のような反響があります。
なお、コメントはFacebookにログインしている状態でのみ受け付けております。セキュリティ上の観点からこのようにしております。ご了承願います。
このエントリーをはてなブックマークに追加  

この記事の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コードが読めるリーダー)で読むとページが表示されます。