対策前
私のサイトはWordpressに「ContactForm7」というプラグインを利用してお問い合わせフォームを設置しました。
設置後すぐに英語の意味不明で迷惑なスパム投稿が毎日数十件送られてきました。
個人ブログですので、海外からメッセージを受け付ける必要がなく、日本語のみを受け付ける前提ですので、送られないように対策しました。
業者の営業メールも必要ないので、こちらは簡単な対策をしました。
対策方法
コードをコピペするだけでOK
WordPressで使用しているテーマ(私はCocoonというテーマを利用しています)の子テーマ(子テーマを利用してない場合は親テーマ)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);
ファイル場所例
/public_html/plus-a.cloud/wp-content/themes/cocoon-child-master/functions.php
コピペ例
<?php // 子テーマ用関数
if ( ! defined ( 'ABSPATH' ) ) exit ;
//子テーマ用のビジュアルエディタースタイルを適用
エディタスタイルを追加します。
//以下に子テーマ用の関数を書く
//textareaに「ひらがな」を含めないと送信できないようにします。
関数 wpcf7_validation_textarea_hiragana ( $result 、 $tag )
{
$name = $tag [ '名前' ] ;
$value = ( isset ( $_POST [ $name ])) ? (文字列) $_POST [ $name ] : '' ;
if ( $value !== '' && ! preg_match ( '/[ぁ-ん]/u' , $value )) {
$result [ '有効' ] = false ;
$result [ 'reason' ] = array ( $name => '送信できません。' ) ;
}
$result を返します。
}
add_filter( 'wpcf7_validate_textarea' , 'wpcf7_validation_textarea_hiragana' , 10 , 2 ) ;
add_filter( 'wpcf7_validate_textarea*' , 'wpcf7_validation_textarea_hiragana' , 10 , 2 ) ;
特定のキーワードが含まれていたら、送れなくする方法
WordPress 標準禁止ワード登録の機能は Contact Form7 にも適用でき、禁止ワードを設定するだけで、迷惑営業メールをかなり減らすことができるのです。
おそらく数ある迷惑営業メール対策の中でも最強の対処法で、効果は絶大です。
下記サイトが分かりやすく参考に設定しました
対策後
以上の対策で迷惑投稿は無くなり、「モデレートしてください」のメールが楽しみになりました。
プラス スパム対策としてreCAPTCHAの実装
フォームにはスパム投稿対策として、Googleが提供する「reCAPTCHA(リキャプチャ)」の実装がお勧めです。
簡単に出来ますので、是非取り入れましょう。
Google reCAPTCHAでサイトを登録する
↑のエンタープライズを始めるをクリック、サイトを登録します。
- ラベルには任意の名称を入力します。
- reCAPTCHA タイプはスコアベース(v3)を選択します。
- ドメインには、reCAPTCHAを設定するサイトのドメインを入力します。
サイトにreCAPTCHA を追加するの画面にサイトキーとシークレットキーが表示されるので、これらをコピーしてContact Form 7のインテグレーションで使用します。
Contact Form 7にreCAPTCHAを実装
- WordPressの管理画面から、お問い合わせ⇒インテグレーションを選択します。
- reCAPTCHAのインテグレーションのセットアップをクリックします。
- サイトキーとシークレットキーをそれぞれ、の入力欄にコピーして変更を保存します。
サイトを開いた時にreCAPTCHAの保護マークが表示されていれば、reCAPTCHAv3の実装は完了です。
コメント