🐷

WordpressのFatal errorを改善した話

2023/02/17に公開

Wordpress

【背景】

クライアントのWordpress環境をDocker-composeで作成したローカル環境に移行して検証する必要がありました。
「All in one WP-Migration」を使って全データを移行してきたのは良かったのですが管理画面を開いたときに

Fatal error: Uncaught Error: Attempt to modify property "response" on bool in /var/www/html/wp-content/themes/jstork19/functions/theme-update-checker.php:181 Stack trace: #0 /var/www/html/wp-includes/class-wp-hook.php(310): ThemeUpdateChecker->injectUpdate(false) #1 /var/www/html/wp-includes/plugin.php(205): WP_Hook->apply_filters(false, Array) #2 /var/www/html/wp-includes/option.php(1986): apply_filters('site_transient_...', false, 'update_themes') #3 /var/www/html/wp-includes/update.php(911): get_site_transient('update_themes') #4 /var/www/html/wp-admin/menu.php(33): wp_get_update_data() #5 /var/www/html/wp-admin/admin.php(158): require('/var/www/html/w...') #6 /var/www/html/wp-admin/edit.php(10): require_once('/var/www/html/w...') #7 {main} thrown in /var/www/html/wp-content/themes/jstork19/functions/theme-update-checker.php on line 181 

が表示されて画面が開きませんでした。

【対処方法】

調べたところ、このエラーは、テーマのアップデートチェックに関する問題が原因で発生することがあるそうです。

なるほど、たしかにエラー文にもThemeUpdateChecker->injectUpdate(false)とテーマアップデートチェッカーの記述があり、更新が失敗した的な
ことが書いてあります。

で、このテーマのアップデートチェッカーを無効化することで改善される可能性があるとのこと。

ファイルは「theme-update-checker.php」という名前で、大抵はテーマディレクトリの中にあるようです。

こちらをエディタで開き、以下の行をコメントアウトすることで、アップデートチェッカーを無効にすることができるとのこと。

$this->response = wp_remote_retrieve_body( $response );

私の環境では同じ記述ではありませんでしたが、181行目の

$updates->response[$this->theme] = $state->update->toWpFormat();

という記述をコメントアウトしたところ改善しました。

あくまでも私の環境では直ったという話なので、ご自分の環境で試す際には事前のバックアップなどをお取りの上、自己責任でお願いいたします。

Discussion