ContactForm7プラグインを使用したメールフォームで利用できるスパム対策は様々ありますが、今回は初心者でも使いやすい方法を一つご紹介します。
外国語をシャットアウトするコード
以下のコードをテーマの functions.php に貼り付けます。
//textareaに「ひらがな」を含まなければ送信できないようにする。
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;
}
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);
コード内容について
フォーム本文の<textarea></textarea>内に「ひらがな」が含まれているかどうか?を正規表現で判別し、含まない場合は「送信できません」というテキストを返し、送信を中断します。
注意点
当然ですが、海外からメッセージを受け付ける必要がある場合はこの方法は使用できません。
日本語のみを受け付ける前提であればこの方法は非常に有効だと思います。
表示例
<textarea></textarea>内に英文のみを入力して、送信ボタンを押すとこのように表示されます。
【参考記事】
ワードプレス内に設置したお問い合わせフォーム(Contact Form 7)へ大量に届く海外スパムメールを賢く禁止にする方法
https://wp-labo.com/contact-form-7-spam-mail-shutout/
Contact Form 7 海外からのスパム対策!お問い合わせ本文が全て外国語の場合は送信できないようにする
https://tanweb.net/2019/09/03/28514/