WordPress管理画面のテーマ編集ページを触っていると、突然「サイトで技術的な問題が発生しています。サイト管理者のメールを確認して指示に従ってください。」のエラーが表示され、サイト管理者であるわたし宛にエラー通知メールが飛んできました。
サイトで技術的な問題が発生しています。サイト管理者のメールを確認して指示に従ってください。のエラーについて
エラー発生の経緯ですが、WordPressブログを準備していて、親テーマのfunctions.phpファイルを子テーマの方に間違ってアップしてしまい、こんな感じのエラーが表示されてしまいました。以前はこんなエラー表示はなかったような気がしたんですが(処理をミスったらだいたい画面が真っ白になる)、メールの内容をよく見てみると、このエラー検知とメール通知の仕組みは、WordPress 5.2から実装されたようですね。
こんにちは!
WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。
今回の場合、WordPress がテーマ Twenty Nineteen でエラーを捉えました。
まずはじめに、ご自分のサイトを開き、表示上の問題がないか確認してください。次に、エラーが発生したページ (https://**********/wp-admin/themes.php?activated=true) を開き、表示上の問題がないか確認してください。
この問題をさらに調査するにはサーバーホストに連絡してみてください。
もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別なリカバリーモードがあります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。
https://****************************************
サイトを安全に保つため、このリンクは 1日 で有効期限が切れます。とはいえご心配なく。有効期限後でもこのエラーが再度発生すれば新しいリンクが送られてきます。
WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。
今回の場合、WordPress がテーマ Twenty Nineteen でエラーを捉えました。
まずはじめに、ご自分のサイトを開き、表示上の問題がないか確認してください。次に、エラーが発生したページ (https://**********/wp-admin/themes.php?activated=true) を開き、表示上の問題がないか確認してください。
この問題をさらに調査するにはサーバーホストに連絡してみてください。
もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別なリカバリーモードがあります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。
https://****************************************
サイトを安全に保つため、このリンクは 1日 で有効期限が切れます。とはいえご心配なく。有効期限後でもこのエラーが再度発生すれば新しいリンクが送られてきます。
エラーが発生した場合、どうすればいい?
上記のメールの文末に「エラーの詳細」が記載されているので、その通りに対応すると良いみたいです。今回のエラーはこんな感じでした。
エラー詳細
===============
エラータイプ E_ERROR が /*********/wp-content/themes/twentynineteen/functions.php ファイルの 276 行目で発生しました。 エラーメッセージ: Cannot redeclare twentynineteen_colors_css_wrap() (previously declared in //*********//wp-content/themes/****/functions.php:276)
===============
エラータイプ E_ERROR が /*********/wp-content/themes/twentynineteen/functions.php ファイルの 276 行目で発生しました。 エラーメッセージ: Cannot redeclare twentynineteen_colors_css_wrap() (previously declared in //*********//wp-content/themes/****/functions.php:276)
ちゃんと原因もファイル名も特定されていたので、その通り改善すればOKぽいんです。
(今回のわたしの場合、子テーマのfunctions.phpでエラーがありますと、という内容です。)
メール本文にあったリンクをクリックしたらどうなる?
エラー通知メールの本文には「もしサイトが壊れていてダッシュボードに正常に接続できない場合」のURLが貼ってあったので、そのリンクをクリックしてみました。するとログインフォームに遷移し、「リカバリーモードを初期化しました。ログインして継続してください。」と表示されました。
一旦ログインできるようになったので、そのままダッシュボードに進んでみると、
「テーマを正しく読み込めませんでした。
テーマ画面から詳細の確認と変更が可能です。」
というエラーが表示されていました。
そもそもリカバリーモードってなんだ?
WordPressの公式ページに書いてあったので読んでみると、リカバリーモードは「問題があったテーマやプラグインを一時停止し、正常にログイできるようにしてくれる機能のことらしいです。When in recovery mode, plugins and themes (also referred to as “extensions”) which are causing a fatal error are paused for that client, ensuring they can work around these errors and access their admin backend as regularly. After entering recovery mode, the user needs to log in. It should be highlighted though that recovery mode itself is not tied to a specific user, but only to the cookie existing on the client.
https://make.wordpress.org/core/2019/04/16/fatal-error-recovery-mode-in-5-2/
訳すと、こんな感じのことが書いてあります。
リカバリモードでは、致命的なエラーを引き起こしているプラグインとテーマ(「拡張機能」とも呼ばれます)はそのクライアントに対して一時停止され、これらのエラーを回避し、定期的に管理バックエンドにアクセスできます。リカバリモードに入った後、ユーザはログインする必要があります。ただし、そのリカバリモード自体は特定のユーザに関連付けられているのではなく、クライアントに存在するcookieにのみ関連付けられています。
リカバリーモードで復旧する
今回のわたしの例だと「テーマ」に問題があったので、リカバリーモードでログインのまま管理画面から「外観」に進んでみると、なるほど、、、確かにテーマが破損していました。
なので、子テーマの方を修正してアップロードしたあとで、
画面右上の「リカバリーモードを終了」リンクをクリックしてみると、
(同じスクリーンショットで分かりにくいですが)いけたみたいです!
突然エラーメールが飛んでくるのはびっくりしましたが、特にWordPressで企業サイトを作っている場合はすぐに対応に入れるので、非常に便利な機能だと思います。
コメント