Google reCAPTCHA v3のアイコンを消す方法

サイト運営

先日、コンタクトフォームのプラグインとして有名なContact form 7がGoogle reCAPTCHA v3に対応するアップデートがありました。

5.1
Constant Contact インテグレーションモジュールを導入。
reCAPTCHA モジュールを更新し reCAPTCHA v3 に対応。
ダークモード用スタイルルールを追加。

何気なくアップデートしたら、Contact form7では従来のGoogle reCAPTCHA v2が使えなくなってしまったので、Google reCAPTCHA v3に移行しました。

Contact form7 5.1.1は地雷バージョンでした。

【reCaptcha V3】Contact form 7 5.1.1でメール送信不可【全てスパム判定】
この記事では、Contact form7 5.1.1でreCaptchaからスパム判定されてメールが送れない状況の回避方法についてまとめています。この記事を読めば、スパム判定を回避してContact form7でメール送信できるようになります。

そうすると、すべてのページでGoogle reCAPTCHA v3のアイコンが表示されるようになります(少なくとも現時点では)。この状況はスマホ画面だとTOPへ戻るボタンと2個表示されるので結構邪魔になります。

reCAPTCHAのアイコンを表示させないのは規約違反ということなのですが、Contact form7を使っていないページでアイコンを表示し続ける必要はないはずです。

是非、Contact form7を使っていないページではアイコンを是非消したいところです。

この記事では、Contact form7を使っていないページでreCAPTCHAのアイコンを表示させない方法をまとめています。

reCAPTCHAのアイコンを表示させない対策

対策は自分が知ってる方法では3通りです。

  1. Plugin load filterプラグインを使う
  2. Invisible reCaptcha for WordPressプラグインを使う
  3. function.phpにコードを追加

 

方法1:Plugin load filterプラグインを使う

このサイトで使っている方法がこれです。

Plugin Load Filter
Dynamically activate the selected plugins for each page. Response will be faster by filtering plugins.

Plugin load filterはプラグインを使う時だけloadするという、Wordpressの軽量化にとても効果のある便利なプラグインです。

少し前までPlugin load filterとContact form7の組み合わせは上手く動かないという報告が多数あったのですが、最近のアップデートで問題が解消されました。

https://celtislab.net/archives/20180511/plugin-load-filter-v3/

調べてみるとどうも Contact Form 7 が REST API を使うようになってからの問題のようです。結構時間がたっています (^_^;)

Contact Form 7 から問い合わせを実行すると http://(site)/wp-json/contact-form-7/...  へリクエストが発行されますがこれを適正に処理できないケースがありました

固定ページを問い合わせページとしてそのページのみで contact form 7 プラグインを有効化していると contact form 7 からの wp-json というリクエストを固定ページへのリクエストと取り違えることで(ページフィルタで固定ページに対して contact form 7 が有効化されていない場合)このリクエストに対して contact form 7 がロードされず、そんな REST API のエンドポイントは知らないよということでエラーとなっているようでした

Plugin load filterを使って、Contact form 7を使っているページだけ、Contact form7を読み込むように設定してあげれば、reCAPTCHAのアイコンも読み込んだ時だけしか表示されなくなります。

説明を読んでもよくわからない人が多いと思いますので手順を書いておきます。

プラグイン:Contact form7に対して以下のような設定にし、フィルター登録します。

  • PageTypeフィルタ⇒Page TypeをONに設定(他は必然的にOFF)
  • エキスパートフィルタ:全てON

Contact formを特定のページだけ読み込むように設定したとしても実際にはそのページ以外にwp-jsonというページも読み込めるようにしておかないとエラーになってしまう。

そのエラーを解消するのがエキスパートフィルタの設定で、エキスパートフィルタの設定は初期状態でREST API、Heartbeat、Ajax、AMPページではプラグインを読み込む設定になっている。つまり、wp-jsonというページに対するアクセスの場合、プラグインを読み込むということ。

方法2:Invisible reCaptcha for WordPressプラグインを使う

Contact Form 7 (v5.1~)+reCAPTCHA (v3) で画面右下のロゴを消す
目次reCAPTCHA v3 のロゴが邪魔reCAPTCHA v3 のロゴを v2 のように表示するプラグイン ...
Invisible reCaptcha for WordPress
Invisible reCaptcha for WordPress plugin helps you to protect your sites against bad spam bots using the new Invisible reCaptcha by Google.

方法3:functions.phpにコードを追加する

特定のページだけContact form7を読み込むようにfunction.phpにコードを追加する方法です。

Plugin load filterとやっていることはほぼ同じだとおもいますが、wp-json云々という話がケアされているのかどうか謎です。

https://moriawase.net/contact-form-7-recaptcha-logo

まとめ

Google reCAPTCHA v3のアイコンを表示しなくする方法を3種類紹介しました。自分が使っている方法はPlugin load filterを使うものですが、Plugin load filterそのものが優秀なプラグインなので、もし導入していない場合は、この機会に導入されることをお勧めします。

タイトルとURLをコピーしました