WordPress を PHP 8.1 系で動かそうとしたら、いろいろエラーが出たのでひとつずつ修正しました。 Photo Express for Google 、 Similar Posts 、 Ktai Style といった古いプラグインもできる範囲で動くようにしました。
目次
WordPress の PHP を 8.1 系にしようとしたきっかけ
WordPress を 6.6 にアップデートして、プラグインもアップデートしていたら Simple GA 4 Ranking も新しいバージョンが出ているようなので手動でアップデートしました。
→ GitHub : simple-ga4-ranking
しかし PHP 8.1 以上が条件らしく上記エラーが出て画面が表示されなかったので、 WordPress を動かしているサーバーの PHP を 8.1 系にすることにしました。 8.1 系にしたのは、レンタルサーバーの推奨が 8.1 系だったからです。
まずローカル環境の MAMP をアップグレードして 6.9 にして PHP 8.1 系を使えるようにしました。そして主に古いプラグインにてエラーがたくさん出たのでそれを潰していきました。
Photo Express for Google
Google フォトの写真を表示させるために使っています。 API の提供が終わったのでもう貼りつけはできませんが。
external-featured-image-pro/class-photo-renderer.php 1129 行目あたり
配列の存在しないキーを呼び出すと PHP 8 からエラーになるようになったようです。 isset() で存在しているか確かめてから呼び出しするようにします。
→ IRODORI DESIGN :【 PHP エラー】 Warning: Undefined array key の解決方法
class-photo-renderer.php 1129 行目あたり
変更前:
変更後:
Post-Plugin Library
Similar Posts を使うために必要なプラグインです。これも修正方法は前項と同じです。
post-plugin-library/common_functions.php 69 行目ほか
69 行目
変更前:
変更後:
97 行目
変更前:
変更後:
102 行目
変更前:
変更後:
105 行目
変更前:
変更後:
107 行目
変更前:
変更後:
109 行目
変更前:
変更後:
111 行目
変更前:
変更後:
115 行目
変更前:
変更後:
125 行目
変更前:
変更後:
127 行目
変更前:
変更後:
129 行目
変更前:
変更後:
149 〜 156 行目
変更前:
変更後:
176 行目あたり
変更前:
変更後:
post-plugin-library/admin-subpages.php 66 行目
$_GET['subpage'] は定義されていないようなので、 null を代入ました。
66 行目
変更前:
変更後:
post-plugin-library/admin_common_functions.php 593 行目
str_repeat の 2 番目の引数は 0 以上でなければならないのに、 -3 が入っているので 0 になるように修正した。 1 つ修正したらあとはエラーが出なくなりました。
593 行目
変更前:
変更後:
Similar Posts
関連記事を表示するプラグインです。
similar-posts/similar-posts.php 27 行目あたり
2 重に定義していることが原因のようです。
→週末プログラマの開発日記: Constant *** already defined を解消する
27 行目
変更前:
変更後:
Ktai Style
フューチャーフォン(ガラケー)でも表示されるようにするプラグインです。ほとんど表示されていないと思いますが、 i モードが 2026 年 3 月 31 日まで使えるようなので一応対応しておきました。
PHP 7 系にしたときに修正た記事は下記です。それにつけ加えて変更しました。
ktai-style/ktai_style.php 117 行目あたり
static にしていないメソッドを呼び出せないので、モデルのインスタンスを作ってから呼び出すといいようです。
→ Qiita :[Laravel]Non-static method のエラーの対応方法
117 行目あたり
変更前:
変更後:
ktai-style/operators/base.php 141 行目あたり
141 行目あたり
変更前:
変更後:
ktai-style/ktai_style.php 949 行目あたり
949 行目あたり
変更前:
変更後:
ktai-style/config/panel.php 20 行目あたり
20 行目あたり
変更前:
変更後:
ktai-style/operators/base.php 2010 行目あたり、 2435 行目あたり
このエラーが一番対応が難儀しました。「 class-wp-hook.php on line 324 」とありますが、 Ktai Style を無効化するとエラーが表示されなくなるので、原因は Ktai Style です。
→ IT エンジニアのアウトプット備忘録:【備忘録】 PHP のバージョンアップで WordPress でエラーが発生した時の対応
上記の記事ではプラグインを削除して対応しています。それでもいいですが、ここまで修正したのでどうにか動作するように調べてみました。
ktai_style.php 604 行目を以下のようにコメントアウトすると表示されます。
メゾットを static にしたりしてみましたが、他にエラーがたくさん出るので諦めて Ktai Style で表示しているときのみ動作するようにしました。
ktai_style.php 604 行目あたり
変更前:
変更後:
ktai-style/inc/template-tags.php 41 行目あたり
→ php : count
valueの要素の数を返します。 PHP 8.0.0 より前のバージョンでは、 パラメータが配列でもなく Countable インターフェイスを 実装したオブジェクトでもない場合、1が返されていました。 ただし、valueがnullの場合、 0 が返されていました。
inc/template-tags.php 41 行目あたり
変更前:
変更後:
$arg は文字列のようなので、文字列かどうか判断するようにしました。
ktai-style/inc/shrinkage.php 96 行目あたり
96 行目あたり
変更前:
変更後:
ktai-style/inc/shrinkage.php 1062 行目あたり、 1077 行目あたり
配列の 2 つ目がないので、あるかどうか確認し、なかったらからの文字列を代入しています。
1062 行目あたり、 1077 行目あたり
変更前:
変更後:
ktai-style/inc/template-tags.php 3 行目あたり
31 行目あたり
変更前:
変更後:
ktai-style/inc/template-tags.php 551 行目あたり
551 行目あたり
変更前:
変更後:
ktai-style/inc/template-tags.php 1241 行目あたり
1241 行目あたり
変更前:
変更後:
ktai-style/inc/kses.php 300 行目あたり
変更前:
変更後:
ktai-style/inc/kses.php 299 行目あたり
変更前:
変更後:
ktai-style/inc/shrinkage.php 485 行目あたり
変更前:
変更後:
ktai-style/inc/shrinkage.php 494 行目あたり
変更前:
変更後:
ktai-style/inc/shrinkage.php 621 行目あたり
変更前:
変更後:
ktai-style/inc/shrinkage.php 632 行目あたり
変更前:
変更後:
wp-config.php 本番サーバーにて
ローカル環境で動作するようになったので、本番サーバーに適用したらまたエラーが出たので修正しました。
wp-config.php on line 41 行目あたり
変更前:
変更後:
Ktai Style 本番サーバーにて
ktai-style/themes/redportal/functions.php 2 行目あたり
エラーログは 4 行目と出ていますが、 ktai-style/inc/template-tags.php は 3 行しかなく原因がわからずかなり悩みました。 wp_head が定義されていないといわれていますが、 Ktai Style では ks_head が使われているし、 Ktai Style で functions.php になにかさせることはないので、たったひとつの関数をコメントアウトしたら動くようになりました。
変更前:
変更後:
→けーちゃんの個人サイト: WordPress: load_theme_textdomain() と load_plugin_textdomain() 関数を少し詳しく解説してみる
load_theme_textdomain() はテーマの翻訳を読み込む関数のようです。
ktai-style/inc/template-tags.php 339 行目あたり
変更前:
変更後:
あとは自作のプラグインと function.php を同じような感じで変更しました。サーバーにも反映して無事に PHP 8.1 系で動くようになりました。しかし肝心の Simple GA 4 Ranking が値を取ってきてくれなくなってしまったので、人気記事が表示されなくなってしまいました。とりあえずテーマに静的にランキングを表示してレイアウトはそれっぽくなるようにしておきました。 Simple GA 4 Ranking が値を取ってきてくれないのは本当になぞ。
ようやく原因がわかり人気記事が表示されるようになりました。

