🐷
WordpressのFatal errorを改善した話
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