プログラミングの役立つ記事をお届けします

【WordPress】ContactForm7のスパム対策にGoogleのreCAPTCHAを入れよう!

「WordPressのお問い合わせフォームにContactForm7をインストールしたけどスパムメールが来る!何か対策はない?」

こんにちは、タカフです。

WordPressでサイト運営するなら絶対に入れておいた方がいいのがお問い合わせフォームです。

SEO対策!WordPressでブログやるならお問い合わせページを設置しておこう

お問い合わせフォームを入れることで信頼性が増してSEOにも効果があるからですからね。

実際僕も上記の記事を書いた時期にお問い合わせフォームを設置しましたが、そこからPVが上がった気がします
(但し、他にも要因はあったかと思うので確固たる証拠はありません)

さて、WordPressのお問い合わせフォームと言えばContactForm7ですが、普通に設置すると結構な数のスパムメールがやってきます

本記事では、そんなContactForm7を設置したことでやってくるスパムメールの対策方法を解説します。

ContactForm7のスパム対策にはGoogleのreCAPTCHA!

お問い合わせフォームのスパム対策にはGoogle様から提供してくれてるreCAPTCHAというツールが便利です。

こちらのツールですがv2までは人間であることを証明する為に下記画像のようなものを出してユーザーに正しい画像選択させた上でフォームの「送信」を許可する方式でした。

ただ、この方式はお問い合わせしてくれる率を下げてしまうんですね。

スパム対策でお問い合わせフォームにreCAPTCHA使うとコンバージョン率下がることあります

訪問したユーザーは少しでもフォーム入力時につまづくと諦めてしまう事があるからです。

そこで登場したのがGoogle reCAPTCHAのv3です。

こちらは、上述のような人間を証明するギミックは無くなってGoogleの技術で自動で人間の訪問かどうかを判定してくれます。

なのでこれなら導入してもコンバージョンを下げることはないかと思います。

Google reCAPTCHAの導入方法

それでは導入方法を解説します。

Google reCAPTCHAの登録とサイトキーの取得

下記URLにアクセスします。
https://www.google.com/recaptcha/intro/v3.html

「Admin Console」ボタンを押下します。

現在Googleアカウントでログインしているブラウザなら下記ページに遷移します。
(ログインしてないブラウザならログイン画面に遷移すると思います)

ラベルに適当な後から見てわかる名称を入れて、ドメインのところでは対象のWebサイトのドメイン名を入れます。

僕は一緒でもいいと思ったので、同じものを入力しました。

次のページにいくともうキーが出てきます。

このキーを後ほどコピペするのでこの画面を出しておいたままにします。

ContactForm7でreCAPTCHAのサイトキーの設定

WordPress管理画面にて、ContactForm7のメニューである「お問い合わせ」のところで「インテグレーション」ページに遷移します。
「インテグレーションのセットアップ」をクリックします。

先ほど表示したままにしたサイトキーの文字列を以下に貼り付けて「変更を保存」を押下します。

作業はこれで終わりです。

後はこれでGoogle reCAPTCHAがスパムから守ってくれます。

(追記)reCAPTHCAのロゴはお問い合わせフォームのページのみ出るようにする

以上までの作業でスパム対策は出来ましたが、何故かお問い合わせフォームのページ以外でもreCAPTCHAのロゴが出るようになってしまいました。

正直めちゃくちゃ邪魔ですね。

必要なのはお問い合わせフォームページのみ表示していればいいので、それ以外は非表示するようにしましょう。

こちらの記事が役に立ちました。

お使いのテーマのfunctions.phpに以下のコードを埋め込みます。

functions.php
// reCAPTCHAのロゴがお問い合わせページ以外でも出るのでお問い合わせページ以外は除外
add_action( 'wp_enqueue_scripts', function() {
  if( !is_page('contact') ){
    wp_deregister_script( 'google-recaptcha' );
  } 
});

これは、scriptタグを出力するタイミングで今アクセスしているページがお問い合わせページのスラッグ名かどうかを判定して、
お問い合わせページ以外ではrecaptchaの動くscriptタグを含めない、という処理になりますね。

これでお問い合わせフォームのページ以外ではgoogle reCAPTCHAのロゴは出なくなります。

(追記)導入した結果

reCAPTCHAを導入した結果、
ContactForm7経由で来るスパム問い合わせがピタッと止まりましたー!!

10日間経過観察してましたが導入後1件も来ていません。

Google先生、さすがです。

まとめ

お問い合わせフォームはサイトの信頼性を高めるのに便利ですが、そのフォーム経由でスパムメールがやってくると、気にしなくていいと思いつつも気にしてしまうものです。

今回の作業だけでスパム対策が出来るならサクッとやっておきたいものですね!

以上、カフーブログの提供でお送りしました。

コメントを残す

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