WordPressの更新ページでWarningエラーがでる
Warning: Attempt to read property "current" on false in wp-admin/update-core.php on line 41
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 43
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 45
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 51
Warning: Attempt to read property "current" on false in wp-admin/update-core.php on line 67
Warning: Attempt to read property "response" on false in wp-admin/update-core.php on line 77
Warning: Attempt to read property "current" on false in wp-admin/update-core.php on line 163
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 164
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 173
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 182
Warning: Attempt to read property "locale" on false in wp-admin/update-core.php on line 182
WordPressの更新ページを見たらまあつらつらとエラーが出ておりましたわ。
アップデートを要求されているのかと思いWordPressを最新にアップデートしても直らない。update-core.phpという文字に引っ張られすぎました。
同様のトラブルのフォーラムがある
エラーメッセージでググったところ、エラーが同じフォーラムが出てきました。どうやらプラグインが影響していたようです。
そしたら私の今回の問題もプラグインかテーマが原因だな。とひとつずつ探っていきます。
プラグインはすべて無効化し、テーマはWordPressの公式のテーマに変えてみる。
原因はテーマだった
原因はPHPのバージョンをあげたのに、制作した子テーマの中に推奨されないコードがあったからでした。本体の方に気を取られ、確認順番を間違えたな。もっとスムーズに解決できたかも、と反省。
エラーがでていた箇所
WordPressの更新をテーマから非表示にしていたんですけど、ここがPHP8になったらエラーになっていました。
add_filter( 'pre_site_transient_update_core', function($a){return null;});
remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', function($a){return null;});
remove_action( 'load-update-core.php', 'wp_update_themes' );
add_filter( 'pre_site_transient_update_themes', function($a){return null;});
PHP8対応版コード
// WordPressコアのアップデート通知を非表示
add_filter( 'pre_site_transient_update_core', function($value) {
return (object) [
'updates' => [],
'version_checked' => $GLOBALS['wp_version'],
];
}, 10, 1);
// プラグインのアップデート通知を非表示
add_filter( 'pre_site_transient_update_plugins', function($value) {
return (object) [
'updates' => [],
];
}, 10, 1);
// テーマのアップデート通知を非表示
add_filter( 'pre_site_transient_update_themes', function($value) {
return (object) [
'updates' => [],
];
}, 10, 1);
// アップデートチェックのアクションを安全に無効化
add_action( 'init', function() {
remove_action( 'wp_version_check', 'wp_version_check' );
remove_action( 'wp_update_plugins', 'wp_update_plugins' );
remove_action( 'wp_update_themes', 'wp_update_themes' );
}, 999 );
これでエラーは出なくなりました。
今回は更新でしたが、原因は使用しているPHPのバージョンに対応していないコードが原因のエラーなので、おそらく今後プラグインやテーマでも同様のエラーがでるかもしれないな、という覚書。