PHP 8.0 で使えなくなった WordPress プラグインと代替案

PHP 8.0 にバージョンアップした結果、使用していた WordPress プラグインのいくつかが使えなくなってしまいました。WordPress 5.2 から、プラグインやテーマが深刻なエラーを発生させたとき、自動的に管理者にメール通知する機能が追加され、そのメールに原因となったプラグインの名前や PHP のエラーメッセージが記載されているので、いくらか対処しやすくなりましたが、ふだんブラウザからしか WordPress を扱っていない非開発者にとって、サイトで重大なエラーが発生しましたのメッセージは大変心臓に悪いので、早めに対処しておきましょう。

IP Geo Block → IP Location Block

IP Geo Block は、アクセス元の IP アドレスに基づいてログイン画面やコメント入力に制限をかけることができるプラグインです。

後継は IP Location Block です。IP Geo Block と違い、日本語化されていませんが、IP Geo Block からの設定の移行機能もありますし、設定項目もほぼ同じなので、そこまで戸惑うことはないと思います。

Invisible reCaptcha → Advanced Google reCAPTCHA

Google reCAPTCHA を使ってログイン画面やコメント入力を保護するプラグインです。

後継は Advanced Google reCAPTCHA です。基本的な設定はサイトキーとシークレットキーを入力するだけなので、難しくないと思います。なお、Contact Form 7 に Google reCAPTCHA を使う場合は、Contact Form 7 の設定画面(お問い合わせ)の中にある「インテグレーション」でサイトキーとシークレットキーを入力します。

エラーの原因

どちらのプラグインも使えなくなった原因は Array and string offset access syntax with curly braces のエラーです。PHP 7.4 まででは、配列や文字列の一部を取得する際に、波括弧が使用できましたが、PHP 8.0 では Fatal Error となります。

$str = 'String';
echo $str{0}; // S を返す。PHP 8.0 以降では Fatal Error
echo $str[0]; // S を返す

$array = ['Red', 'Green', 'Blue'];
echo $array{1}; // Green を返す。PHP 8.0 以降では Fatal Error
echo $array[1]; // Green を返す

2019年11月にリリースされた PHP 7.4.0 の時点で非推奨となっていましたが、どちらのプラグインも最終更新はそれ以前のようなので、仕方ないかな、という感じです。こういう事態に遭遇すると、人気になったプラグインほど、開発が止まったときの影響が大きくなるので、開発者としては「どう終わるか」が悩ましいな、と思うのでした。