当サイトで配布している【Hima Art Utility】プラグイン。WordPressのパフォーマンス自体には影響がないという認識で、PHP7.4の環境で作ってきました。
でもサーバーによっては、デフォルトのPHPバージョンが8.0もしくは8.1になっていて、PHPのバージョンのことなど知らずにWordPressを自動インストールするケースも増えるでしょうということで、環境をPHPバージョン8.1へ変更しました。
すると、表立ってエラーで動作しないということはありませんでしたが、PHP7.4では出なかった警告がいくつか出ましたので、対応しました。
そこで今回は、自作テーマや自作プラグインで同じようなケースがあった場合に自身で対応できるよう、メモとして対応方法を紹介しておきます。
PHP8.1で発生する警告への対応方法(例)
PHP Warning: Undefined variable $〇〇 in…
これは、$〇〇の変数が使われていますが、きちんと定義されていませんよ!という警告です。
大抵の場合は、1つのプログラム(function)の中で、コードを省略するために使用した変数(今回の場合は「$image_alt」)の規定値が設定されていないですよ!という意味のようです。
コード例を挙げると、【Hima Art Utility】プラグインのプログラムの中に以下の記述があり、警告になっていました。
$image_alt = get_the_title($post->ID);
これを以下のように、変数に何かの値があったら..という条件を追加することで、警告は出なくなります。
if(isset($image_alt)){
$image_alt = get_the_title($post->ID);
}
要するに「値がなかった場合はどうすんの?」と言われてるということです。PHPのバージョンアップで厳格になったということなんですね。
参考:PHPでNotice: Undefined variableというエラーが出たとき
PHP Warning: Attempt to read property “〇〇” on null in…
これは、〇〇の値があったら、なかったら..という判断に対して、何も判断基準がないですよ!という意味のようで、私の場合は、警告の出ている行の問題ではなく、前項の変数指定の問題と連動したものでした。
$author_ID = $post->post_author;
これに対しては、最終的に$postという変数は何?といわれていることに気づき、
global $post;
(ループ外で投稿に含まれる列を指定する場合に使うグローバル関数)が抜けていたことで発生していました(いわゆるチョンボです..)。
まあこのコードは、データが空だった時の対応としてセットしていたもので、後から上書きで変数に対する値の指定をしているもので、特に主プログラムに影響のあるものではなかったため、構文として警告が出たということなのでしょう(ということは、この記述は以前から何も効いていなかったのかも..怖)。
以上、【Hima Art Utility】プラグインではこの程度の改修で済みましたが、結構出る方もいるかも知れないので、コードをよく見て、関連しているプログラムも見て..地道に対応しましょう。
後述 PHP8.1への変更は早計かも..
【Hima Art Utility】プラグイン自体の警告はなくなったのですが、ほかのプラグインでまだ対応しきっていないものもあるようですし、投稿編集画面を開いたときに結構な非推奨項目が出るので、8.1にするのは早計かも知れません。
現在、このサイトはPHP8.0で運営しており、debugをtrueにしてもエラーや警告等の表示は出ませんから、少なくとも【Hima Art Utility】プラグインに関しては8.0までは問題なく使えるようです。
コメントを残す