- サイトのトップページに謎の英語(Warning)が表示される
- Invisible reCaptchaプラグインの設定画面がすべて「設定」ボタンになってしまう
動画や解説サイトを見ながらWordPressブログの設定を進めていたら、トップページに謎のメッセージが表示されることがあります。
原因はInvisible reCaptchaプラグインの不具合です。
エラーを消すためには、Invisible reCaptchaの使用をやめ他のプラグインを使うしかありません。
↑Invisible reCaptchaの最終更新は4年前(2024年5月調べ)
この記事では前半でサイトを正常に戻すための対処方法を、後半でreCaptcha機能と今回の現象を詳しく解説していきます。
細かいことは知らなくても良いからとにかくエラーを消したいという方は、前半の「Invisible reCaptchaエラーの対処方法」をどうぞ。
- WordPressサイトでInvisible reCaptchaプラグインを使っている(使おうとしている)
- Google reCAPTCHAでサイトキーとシークレットキーの発行完了している
- お問い合わせフォームはContact Form7プラグインを使用している
※Google reCAPTCHAのサイトキー、シークレットキー発行手順は本記事では解説しません。
Invisible reCaptcha 不具合の対処方法
今回発生する不具合は大きく分けて次の2つです。
- トップページにWarningが表示される
- 設定画面のボタンがすべて「設定」になってしまう
Invisible reCaptchaが出すWarningメッセージ
一番目立つ不具合は、トップページに以下のWarningが表示されます。
サイトを見てくれた他の人からの指摘で気づく方も多いです。
Warning: The magic method InvisibleReCaptcha\MchLib\Plugin\MchBasePublicPlugin::__wakeup() must have public visibility in /home/xxxxxxxx/public_html/xxxxxxxx.com/cc/wp-content/plugins/invisible-recaptcha/includes/plugin/MchBasePublicPlugin.php on line 37
※ xxxxxxxx 部分はサイトによって異なります。
Inbisible reCaptcha設定画面がおかしい
もう一つは設定画面のボタンがすべて「設定」になってしまうという現象です。
あなたのサイトの不具合と同じでしょうか。
次から対処方法を解説してきます。
Invisible reCaptchaの設定をひかえてから停止する
Invisible reCaptchaを停止すればエラーは消えます。
トップ画面に謎の文字列が表示されている状態はサイトにとって非常によろしくないので、一刻も早く直しましょう。
Invisible reCaptchaにサイト鍵と秘密鍵を設定済みの場合は設定をひかえておくと代替プラグインへの移行がスムーズです。
設定をひかえる
「設定」⇒「Invisible reCaptcha」から設定画面を開きます。
サイト鍵と秘密鍵に入力してある値を、メモ帳にコピーするなどしてひかえておいてください。この後すぐに使います。
Invisible reCaptchaに設定する前でしたら、Google reCAPTCHAのサイトのv3 Admin Consoleで、ご自身のサイトのサイトキーとシークレットキーを確認すればOKです。
プラグインを無効化する
プラグイン画面のInvisible reCaptchaの「無効化」ボタンで、無効化します。
無効化するとトップページのWarningは消えました。
今後Invisible reCaptchaを使うことはありませんので、無効化後は削除しましょう。
代替えプラグインのインストール&設定
reChaptcha機能を使用できるプラグインは複数あります。
本記事では次の2つの組み合わせでInvisible reCaptchaと同等の機能を実現する方法を紹介します。
- reCaptcha by BestWebSoft
- Contact Form 7のインテグレーション機能
2つ組み合わせなければならない理由は、記事の後半で説明しますね
reCaptcha by bestWebSoft のインストール
1)プラグインの「新規追加」から、reCaptcha by bestWebSoftをインストールし「有効化」します。
2)「Settings」から設定画面を開きます。
3)設定します。
① reCaptcha Version:Version 3
② SiteKey:控えておいたサイト鍵、 Secret Key:控えておいた秘密鍵
③Enable reCaptcha for:すべてにチェック(必要に応じて調整可)
4)画面下のHide reCaptcha Badge設定をお好みに合わせて変更します。チェックを入れるとreCaptchaで守られている画面のアイコン表示が文章に変わります。
■Hide reCaptcha Badgeにチェックをした場合:文章表示
■Hide reCaptcha Badgeにチェックをしない場合:アイコン表示
おまけ:reCaptcha by bestWebSoft を入れたらログインできなくなった場合
reCaptcha by bestWebSoftプラグインを入れたログイン画面で、以下のエラーが赤字で表示されログインできなくなることがあります。
The reCAPTCHA verification period has expired. please reload the page.
これはreCAPTCHA Version 3のKeyが2分経過して期限切れになったことにより表示されています。
英語のメッセージの通りページを更新(リロード)するとエラーが消え、ログインできるようになります。
大抵のブラウザでは[F5]キーでページのリロードができます。お試しください。
Contact Form7の設定
reCaptcha by BestWebSoftの無料版は、お問い合わせフォームをreCaptcha機能で守ってくれません。
そこでお問い合わせフォームプラグインに備わっているreCaptcha設定機能を使うことにしましょう。
Contact Form7の場合は次の手順で設定できます。
1)「お問い合わせ」⇒「インテグレーション」⇒「reCAPTCHA」⇒「インテグレーションのセットアップ」
2)サイトキー:控えておいたサイト鍵、シークレットキー:控えておいた秘密鍵 を設定し「変更を保存」
(中級者以上向け)Contact Form7のreCAPTCHAバッジがうっとおしい場合
Contact Form7のreCAPTCHA機能をONにすると、すべてのページの右下に強制的にreCAPTCHA バッジが表示されます。これがちょっとウルサク感じるかもしれません。
reCAPTCHA バッジの必要性については、reCAPTCHAのよくある質問に以下の解説があります。
reCAPTCHA バッジを非表示にします。どうすればよいですか?
ユーザーフローに目に見える形で reCAPTCHA のブランドを含めていれば、バッジを非表示にできます。次のテキストを含めてください。
This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply. バッジを非表示にする場合は .grecaptcha-badge { visibility: hidden; } を使用して下さい。Google reCAPTCHA よくある質問
テキストが含まれていればバッジを非表示にできるということです。
「外観」→「カスタマイズ」→「追加CSS」に上記のバッジ非表示のCSSを設定し、必要なページにのみテキストを表示させるという方法が取れます。
.grecaptcha-badge { visibility: hidden; }
■お問い合わせページ
reCaptcha by bestWebSoft プラグインの範囲外の為、上記テキストをお問い合わせページ(固定ページ)に手動で追加する。
■各投稿のコメント
コメント機能を有効にしている場合は、reCaptcha by bestWebSoft プラグインのHide reCaptcha Badge設定をONにして、テキストを表示させる。
以上でInvisible reCaptchaで実現していた機能はすべて代替えできました。
Invisible reCaptchaに不具合が起こる条件
Invisible reCaptchaに今回の不具合が発生する条件は、WordPressが動作しているサーバのPHPバージョンが8.0以上の場合です。
PHPとは主にWebアプリケーション開発に使用されるオープンソースのサーバーサイドスクリプト言語のこと。多くのWebサイトやWebアプリケーションで使用されており、WordPressもその一つです。
PHPバージョンの確認方法
■ ConoHaWINGの場合
「サイト管理」→「サイト設定」→「応用設定」→「PHP設定」→「PHPバージョン」
■エックスサーバーの場合
PHPバージョンを7.4に戻せばよい?
PHP8.0の1つ前のバージョンはPHP7.4です。
PHP7.4に戻せば本記事で解説している問題は一旦発生しなくなりますが、7.4に戻すことはオススメしません。
理由は次の2つです。
- PHP7.4はセキュリティサポートが終了している
- PHP8以上はPHP7.4よりも処理速度が速い
1つずつ見ていきましょう
PHP7.4はセキュリティサポートが終了している
PHP7.4はセキュリティサポートが2022年11月28日に終了しています。(参考: PHP公式サイト Supported Versions)
セキュリティサポートが終了すると、PHP7.4に対する新しいセキュリティアップデートは提供されなくなります。
インターネットに公開しているサイトで、セキュリティの問題があるソフトウェアの使用は絶対に避けなければなりません。
現在はPHP7.4にセキュリティ上の問題は発見されていませんが、発見されたときに慌てるよりも今からPHP8.0以上に変更しておきましょう(最新はPHP8.1です)。
PHP8以上はPHP7.4よりも処理速度が速い
PHP 8は処理速度が向上しており、ベンチマークテストでも高いスコアを出しています。
PHP 8のリリースノートによると、PHP 7.4に比べて平均で約23%パフォーマンスが向上しています。JITコンパイラの導入により、CPU密度の高いワークロードにおいては特に高速になります。
(参考:PHP公式サイトPHP 8.0.0 Release Announcement )
PHP公式サイトによると、PHP 8.0.0はPHP 7.4.0よりも、各種テストで平均1.3〜2倍のパフォーマンスを発揮しているという結果が出ています。
PHPのパフォーマンスが向上するとサイトの表示速度が速まり、サイト速度が速まるとSEOにも効果があると言われています
reCAPTCHA機能について
今回設定したreCAPTCHA機能とは、どのような機能なのでしょうか。
少し難しい部分もあるかもしれませんが、インストールしたプラグインの機能を理解していると、今後エラーに遭遇したときの切り分けが容易になりますのでぜひ最後まで読んでくださいね。
reCAPTCHA機能とは
reCAPTCHAは自動化された攻撃やスパムからウェブサイトを保護するためにGoogleが提供する技術です。人間の操作かどうか確認することで、ウェブサイトを自動化された攻撃から保護します。
reCAPTCHAにはv2とv3があり、v2はユーザー(人)がテストをクリアする必要があるのに対し、v3はユーザーに見えない背後で動作します。
v2では、ユーザーが「私はロボットではありません」というチェックボックスを選択したり、画像認識や音声認識のテストを行ったりすることで、人間が操作していることを確認。v3では、ユーザーが操作しているかどうかをユーザーの行動パターンなどのさまざまな要因を分析することで決定するのです。
v3はよりシームレスで使いやすく、v2はより強力な保護機能を提供できます。
ブログサイトとreCAPTCHA機能
会員用機能などがない一般的なブログサイトには、以下の4種類のフォーム画面(ユーザが入力可能な部分)があります。
- 管理画面のログインフォーム
- パスワード再発行画面
- 記事のコメント
- お問い合わせフォーム
ログイン後の管理用ダッシュボードにはたくさんのフォームがありますが、管理者のID/パスワードを知らないとアクセスできないため、ここでは除外します。
■サイトの管理者が使う画面
■サイトの読者が使う画面
4つの入力フォーム画面を守る方法の1つがreCAPTCHAです。
多くのサイトでinVisible reCaptchaプラグインが使われていた大きな理由は、上記4つのフォームの保護を無料で網羅していたこと。
現在一番の問題は、同じ機能をもつ適切なプラグインが見当たらないことにあります。
代替え案として2つのプラグインを使っていたのはそのためです
reCAPTCHAの守る範囲
この記事で紹介したプラグインを含め、よく使われるプラグイン’(無料版)のreCAPTCHA機能が守る範囲を表でまとめました。
Invisible reCaptcha | reCaptcha by bestWebSoft | Contact Form7 | WPForms Lite | |
---|---|---|---|---|
ログイン画面 | ||||
パスワード再発行画面 | ||||
記事のコメント | ||||
お問い合わせフォーム |
Invisible reCaptcha以外でサイト全体をreCAPTCHA機能で守るためには、複数プラグインの組み合わせが必要となることがわかります。
reCAPTCHA機能は必要なの?(中級者向け)
ここまでreCAPTCHA機能の使用方法の説明をしてきましたが、reCAPTCHA機能は必ず使用しなければならないのでしょうか。
実はreCAPTCHA機能はセキュリティ機能の1つに過ぎず、必ず使用しなければならないものではありません。次のような人は、省略することが可能です。
※セキュリティ機能は多重にかけることでより強固になりますので、使用しても問題ないです。
- 他のサイトで使用していない強固なパスワードを設定している
→ ログイン画面のreCAPTCHAは不要 - SiteGuard WP Pluginなどのプラグインで、ログイン、パスワード再発行、コメント欄にひらがな入力を必須としている
→ログイン画面、パスワード再発行画面、コメント欄のreCAPTCHAは不要 - コメント機能をOFFにしている
→コメント欄のreCAPTCHAは不要 - お問い合わせフォームを設置せず、メールアドレスの掲載で対応している
→お問い合わせ機能のreCAPTCHAは不要
コメント機能を制限したりreCAPTCHA以外のセキュリティ対策を施すことで、reCAPTCHA機能を使用しないという選択もできるのです。
プラグインの数を減らしたくなったときは、reCAPTCHA機能でご自身のサイトのどの範囲を守っているか確認して取捨選択してみてください。
まとめ:今はInvisible reCaptchaは使えない。代替プラグインを使おう。
PHP8.0以上でInvisible reCaptchaを使うと発生する不具合の対処方法について解説しました。
メンテナンスが4年以上停止しているInvisible reCaptchaプラグインは、もう使えません。
WordPressの4つのフォームをreCAPCHA機能で無料で守るには、次の2つのプラグインを使って代替しましょう。
- reCaptcha by BestWebSoft
- Contact Form 7のインテグレーション機能
PHP7.4に戻せばエラーは出なくなるという解説もありますが、PHP7.4はセキュリティサポートが終了しているので使わないようにしましょうね
コメント
コメント一覧 (1件)
りょうこ様
お世話になります。
ブログを始めたばかりでまさにこの現象に直面しておりました。
対策と理由とさらにこれを実施する全体像が見えてとても役立つ情報でした。
ありがとうございます!