以前のInvisible reCaptchaプラグインはPHP 8でエラーが発生することがあり、プラグイン内部のPHPファイルを修正する回避策が使われていました。
現在はメンテナンスが再開され、公式版でPHP 8.xへの対応が行われています。古いファイルを手作業で書き換えず、バックアップを取って公式の最新版へ更新するのが基本です。
この記事の旧手順にあった MchBasePublicPlugin.php と MchIPUtils.php の直接編集は、現在は推奨しません。
結論:プラグインを直接書き換えず更新する
WordPress.orgの公式配布ページでは、Invisible reCaptcha 1.3.0以降にPHP 8対応が記載されています。1.3.2ではPHP 8.xの非推奨警告や型エラーなども修正されています。
プラグインファイルを直接編集すると、次回更新で変更が消えるだけでなく、公式コードとの差分が分からなくなり、不具合やセキュリティ問題の確認が難しくなります。
更新前に確認すること
- WordPress本体、データベース、
wp-contentのバックアップがある - 可能なら本番サイトを複製したテスト環境で先に確認する
- 現在のInvisible reCaptchaのバージョンを記録する
- サイトキーとシークレットキーの管理場所を確認する
- ログイン、コメント、問い合わせなど、保護対象のフォームを記録する
シークレットキーは公開ページやスクリーンショットへ掲載しないでください。漏えいした可能性がある場合は、管理画面で新しいキーを発行します。
PHP 8エラーを解消する手順
- サイト全体をバックアップします。
- テスト環境がある場合は、本番と同じ状態を複製します。
- WordPress管理画面の「プラグイン」でInvisible reCaptchaを最新版へ更新します。
- キャッシュ機能やサーバーキャッシュを使用している場合は削除します。
- 「設定」→「Invisible reCaptcha」でキーと保護対象を確認します。
- ログアウト状態で保護対象のフォームを一つずつ送信します。
- PHPエラーログとWordPressのサイトヘルスを確認します。
過去にプラグインファイルを直接編集している場合、最新版への更新で公式ファイルに置き換わります。更新後に古い改変を戻さず、そのまま動作を確認してください。
更新ボタンが表示されない場合
- バックアップを取得します。
- 現在の設定値を記録します。
- 公式のWordPress.orgから最新版を入手できることを確認します。
- 古いプラグインを停止します。
- 管理画面から公式版を再インストールして有効化します。
- キーと保護対象を再確認し、送信テストを行います。
配布元が不明なZIPファイルや、第三者が修正したファイルは使用しないでください。
reCAPTCHAキーの種類に注意
Invisible reCaptchaプラグインの案内では、Google reCAPTCHA v2の「Invisible reCAPTCHA badge」で作成したサイトキーとシークレットキーを使用します。reCAPTCHA v3用のキーとは方式が異なるため、設定時に取り違えないよう注意してください。
Googleの管理画面では、許可するドメインも確認します。ドメインを追加・変更した直後は、反映まで時間がかかる場合があります。
更新後に確認するフォーム
- WordPressのログイン
- パスワード再発行
- ユーザー登録を許可している場合は登録フォーム
- コメントを許可している場合はコメントフォーム
- Contact Form 7などの問い合わせフォーム
- WooCommerceを使っている場合はログインや会員登録
管理者としてログインした状態だけで確認せず、シークレットウィンドウなどを使って一般の訪問者と同じ状態でもテストします。正常な送信、入力エラー、メール受信まで確認してください。
最新版でも動かない場合
- キーのエラー:v2 Invisible用のキーか、対象ドメインが登録されているか確認する
- バッジが表示されない:キャッシュを削除し、JavaScriptの結合・遅延機能を一時停止して確認する
- 送信できない:フォームプラグインとの連携設定とPHPエラーログを確認する
- ログインできない:サーバー側でプラグインを一時停止し、バックアップから戻せる状態で原因を切り分ける
- 競合が疑われる:テスト環境で他のセキュリティ・キャッシュ系プラグインを一つずつ停止する
本番環境でプラグインを無計画に停止すると、フォームやログイン保護が外れる可能性があります。切り分けはテスト環境で行うのが安全です。
別の迷惑送信対策も検討する
reCAPTCHAは外部サービスであり、訪問者のブラウザーからGoogleのサービスへ通信します。利用する場合は、プライバシーポリシーで外部サービスの利用を説明し、必要以上のページでスクリプトを読み込まない構成を検討してください。
代替候補にはCloudflare Turnstileがあります。Cloudflareのプロキシを利用していないサイトでも導入できますが、サイトキーの設置だけでは不十分です。サーバー側で取得したトークンを検証する処理が必要です。
フォームが少ないサイトでは、ハニーポット、送信回数制限、入力検証を組み合わせる方法もあります。なおぽラボでは自作問い合わせフォームへ切り替え、外部CAPTCHAを常時読み込まずに対策しています。
まとめ
Invisible reCaptchaをPHP 8で使うために、プラグイン内部のPHPファイルを直接修正する必要はなくなりました。バックアップとテスト環境を用意し、公式の最新版へ更新してください。更新後は、保護対象のフォームをログアウト状態で送信し、エラーとメール受信まで確認しましょう。
