概要

WordPressのテーマのひとつであるCocoonを更新したら、管理者画面にアクセスできなくなりました。

ここでは、あまりスマートではありませんが、私がこの問題を解決した方法について紹介します。

環境

  • WordPress 5.7.2
  • Cocoon 2.3.2.1

エラー

管理者画面にアクセスすると次のようなメッセージが表示されました。

このサイトで重大なエラーが発生しました。

対応手順については、サイト管理者のメール受信ボックスを確認してください。

このようなエラーメッセージが表示されるだけで具体的な問題の解決方法については何も書かれていませんでした。

そこで、サーバーの方のログを確認すると次のような内容がありました。

Uncaught Error: Attempt to modify property “response” on bool

ログから、今回のエラーはWordPressのテーマとして利用しているCocoon内のスクリプトで発生していることがわかりました。

対処方法

私自身、あまりWordPressやPHPなどに詳しいわけではないので、誤解がある可能性もありますが、テーマの更新を確認する処理の途中でエラーが発生していることがわかりました。

今回、あまりスマートな解決方法ではありません。というのも、更新チェックの処理をしないようにすることで、エラーの解決をするためです。

wp-content/themes/themes/cocoon-master/lib/theme-update-checker.phpのファイルを次のように編集しました。

        /**
         * Insert the latest update (if any) into the update list maintained by WP.
         *
         * @param StdClass $updates Update list.
         * @return array Modified update list.
         */
        public function injectUpdate($updates){
                $state = get_option($this->optionName);

                //Is there an update to insert?
                //if ( !empty($state) && isset($state->update) && !empty($state->update) ){
                //      $updates->response[$this->theme] = $state->update->toWpFormat();
                //}

                return $updates;
        }

171行目から186行目までを抜粋しました。重要な部分は193行目からの部分で、行の先頭にスラッシュをふたつ入れています。

こうすることで、エラーが発生しなくなりました。

さいごに

今回の対処法はあまりスマートとは言えません。

おそらく、更新のチェックが正しく機能しなくなると思われるので、今後は手動で更新をチェックしていく必要があるでしょう。

その覚悟を持って、上記の対応をしてください。