【CF7 Invisible reCAPTCHA】Warningエラーが表示される[解決]

CF7 Invisible reCAPTCHA

お問い合わせページにエラーが表示されている

大変!PHPをアップデートしたら、お問い合わせページにエラーが表示されているの・・・

PHPを8以上にアップデートすると、「Contact Form 7」を使用しているページで、下記のようなエラーが表示されることがあるようです。
Warning: Trying to access array offset on value of type bool in ****/wp-content/plugins/cf7-invisible-recaptcha/cf7-Invisible-recaptcha.php on line 710

ただし、表示されないケースもあるので完全な原因特定には至っていません。

エラーが起きているケース
PHP8.0、Wordpress6.2、ContactForm7 5.7.6、CF7 Invisible reCAPTCHA1.3.3
エラーが起きなかったケース
PHP8.2、Wordpress6.4.1、ContactForm7 5.8.3、CF7 Invisible reCAPTCHA1.3.4

前提:CF7 Invisible reCAPTCHA の使用中止を検討

「CF7 Invisible reCAPTCHA」プラグインは、お問い合わせフォーム用のプラグイン「Contact Form 7」に手軽にGoogle reCAPTCHAを導入できるというとても優れたプラグインでしたが、昨今はアップデートが滞りがちで、サポートの回答もよろしくなく、今後の開発中止や廃止されることが考えられますので、早いうちに使用中止を検討するのが妥当と思われます。
以前は、reCAPTCHAを導入するのに直接ソースを触ることなく導入できるプラグインとして、とても便利だったのですが。
おいぬ

現在は「Contact Form 7」に新たにプラグインを追加することなく、reCAPTCHAを簡単に設定できるよ。

エラーの原因?

※読み飛ばしていただいてOKです
cf7-Invisible-recaptcha.php の710行目あたりを見ると、
$gdpr_msg = get_option("wpgdprc_integrations_contact-form-7_error_message");

〜〜(略)〜〜

// For GDPR related message
$elements .= "var innerVal = [".$formId.",'gdpr','".$gdpr_msg[$formId]."'];
contactform.push(innerVal);
";
エラーの内容(Trying to access array offset on value of type bool)は、ブール型の変数に、配列のオフセットでアクセスしようとした際に発生します。
おそらく、
$gdpr_msg = get_option(“wpgdprc_….
がfalseで返ってくるはずなので、それに対して、
$gdpr_msg[$formId]
とアクセスしたのが原因と思われます。
ちなみに調べたところ、get_optionの中の、
wpgdprc_integrations_contact-form-7_error_message
は、「Cookie Information | Free WP GDPR Consent Plugin」というプラグインを使用するとwp_optionsテーブルにフィールドが作成されます。
このプラグインは、GDPRなどデータ保護規則の遵守を支援するためのプラグインで「Contact Form 7」と1クリックで連携できるようになっています。
このプラグインを使用しなかったり、プラグイン中でエラーメッセージを設定しなければ、get_optionはfalseなので、エラーが発生するのではと推測します。

対応方法

(1)Contact Form 7 インテグレーションのreCAPTCHAを使用する

前述のように「CF7 Invisible reCAPTCHA 」プラグインはアップデートが滞りがちだったり、「Cookie Information | Free WP GDPR Consent Plugin」も最新のWordpressに追い付いていない状況ですので、可能であれば使用しない選択をすべきと思います。
また、現在の「Contact Form 7」では、特に新たなプラグインを追加することなく、「Contact Form 7」のメニュー「インテグレーション」から、簡単にreCAPTCHAを設定することができます。
①ダッシュボード「Invisible reCAPTCHA」をクリック。
②入力済みの「Site Key」と「Secret Key」をメモ帳などに一時的に保存しておく。
③ダッシュボード「お問い合わせ」ー「インテグレーション」をクリック。
④「インテグレーションのセットアップ」をクリック。
⑤①でメモしておいた「Site Key」と「Secret Key」をペーストして「変更を保存」。以上です。
1〜2日後に、reCAPTCHAが正常に動いているか確認しましょう。

Google reCAPTCHA

(2)Warningを非表示にする(非推奨)

WordPressに表示されるPHPのWarning表示は、エラー部分を無視して実行完了されるので、基本動作に大きな影響はない場合が多いです。
従って、動作確認して問題がないようでしたら、アラートを非表示にするのも良いでしょう。
ただし、別のプラグインやfunctions.phpの操作によって表示されるべきエラー表示も非表示になってしまうので、あまりオススメはしません。

プラグインは都度見直しすることが必要ね!

おいぬ

PHPやWordpress本体をアップデートする際は、ステージングサイトでテストしてから適用するのが確実だね!

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