プラグインを更新したら、サイトに「このサイトで重大なエラーが発生しました。」とだけ表示されるようになった。管理画面を開こうとしても、同じ画面が出て入れない。
こんなとき、WordPressには「リカバリーモード」という逃げ道が用意されています。原因になったプラグインを止めた状態で、管理画面に入れる仕組みです。
ローカルのテストサイトに、わざとエラーを起こすプラグインを入れて、エラーが出てから元に戻すまでを試しました。サイトの表側を何度開いても、リカバリーモードのメールは1通も届きませんでした。届いたのは、管理画面を開いたときです。
リカバリーモードとは
リカバリーモードは、WordPress 5.2で追加された機能です。プラグインやテーマが「致命的なエラー」を起こしてサイトが動かなくなったとき、次のように働きます。
- サイト管理者のメールアドレスに、エラーの内容と、リカバリーモードに入るためのリンクを送る
- そのリンクから入った人の画面だけ、原因のプラグインやテーマを一時停止して、管理画面を使えるようにする
一時停止されるのは、メールのリンクを開いてログインしたブラウザの画面だけです。訪問者から見たサイトは、エラーのままです。原因のプラグインを無効化して、はじめてサイトが元に戻ります。
試す準備
今まさにエラーが出ているなら、この節は飛ばして「わざとエラーを起こして試した手順」の2から読んでください。ここでは、テスト用のサイトで同じ状況を作る方法を書きます。
テスト用のWordPressを用意する
試すのは、手元のパソコンに作ったテスト用のWordPressです。今回は「Local」で作ったサイト(WordPress 7.1.3、PHP 8.2)を使いました。Localには、WordPressが送ったメールを受け取って見られる「Mailpit」という機能があります。サイトの画面の「Tools」タブにある「Open Mailpit」から開けるので、リカバリーモードのメールまで確かめられます。
Localで新しいWordPressサイトを1つ作るのに、入力するのはサイト名とユーザー名、パスワードの3つだけです。あとは「Continue」を3回押し、「Add Site」を押せば、自分のパソコンの中でWordPressが動き始めます。 サーバーやドメインの契約はいりません。テーマやプラグイン...
エラーを起こすプラグインを作る
有効にすると、存在しない関数を呼び出して止まるだけのプラグインを作ります。
- テスト用サイトのフォルダを開き、「wp-content」→「plugins」の中に「sample-broken-plugin」というフォルダを作ります。Localでは、サイト名の下の「Site folder」を押すとサイトのフォルダが開き、「app」→「public」の中に「wp-content」があります。
- メモ帳やテキストエディットなどで新しいファイルを作り、下のコードを貼り付けます。「sample-broken-plugin.php」という名前(文字コードはUTF-8)で、1.のフォルダに保存します。テキストエディットを使うときは、先に「フォーマット」→「標準テキストにする」を選んでおきます。
- テスト用サイトの管理画面で「プラグイン」を開くと、「Sample Broken Plugin」が並んでいます。「有効化」を押すと、そこからサイトがエラーになります。有効化のあとに戻ってくる管理画面でもエラーになるので、管理画面から有効化した場合は、この時点でリカバリーモードのメールが送られます。
<?php
/**
* Plugin Name: Sample Broken Plugin
* Description: リカバリーモードの検証用。有効化すると致命的エラーを起こす。
*/
add_action( 'init', function () {
sample_function_that_does_not_exist();
} );
試し終わったら、リカバリーモードの中でこのプラグインを無効化し、「プラグイン」の画面から削除します。
わざとエラーを起こして試した手順
1. サイトに「重大なエラー」が表示される
プラグインを有効にすると、サイトのどのページを開いても、次の画面になりました。

2. 管理画面を開くとメールが送られる
管理画面(/wp-admin/)を開くと、表示が少し変わりました。

「サイト管理者のメール受信箱で手順を確認してください」とあります。この表示は、メールを送ったかどうかに関係なく出ます。
サイトの表側でエラーが出ている間は、メールは送られていませんでした。サイトを開いたあとにLocalのメール受信画面を確かめても、何も届いていません。管理画面を開いて、はじめてメールが届きました。
WordPressのコードを確かめると、リカバリーモードのメールは、管理画面やログイン画面でエラーが起きたときだけ送られる決まりになっています。サイトが壊れたと気づいたら、まず管理画面を開いてみます。
3. メールのリンクを開く
届いたメールです。

| 場所 | 書かれていること |
| ①件名 | 「[サイト名] サイトで技術的な問題が発生しています」 |
| ②原因 | エラーを起こしたプラグインやテーマの名前。メールの下のほうには、エラーが起きたファイルと行番号も書かれている |
| ③リンク | リカバリーモードに入るためのリンク。有効期限は1日で、1回しか使えない |
ほかに、WordPressのバージョン、有効なテーマ、PHPのバージョンも書かれています。制作会社やサーバー会社に相談するときに必要な情報は、このメールにそろっています。
リンクは1回しか使えません。WordPressの本体のコードでは、開いた時点でリンクが使えなくなり、ログインしなかった場合も同じです。スマホで開いてからパソコンで開き直すと入れないので、作業するパソコンのブラウザで開きます。
4. ログインする
③のリンクを開くと、ログイン画面に「リカバリーモードを初期化しました。ログインして継続してください。」と表示されます(①)。

リンクを開いただけでは管理画面に入れません。いつものユーザー名とパスワードでログインします。メールが誰かに見られても、リンクだけでは管理画面に入れないようになっています。
5. 原因のプラグインを無効化する
ログインすると、管理画面がいつもどおり開きました。「プラグイン」の画面には、リカバリーモード中であることの案内(①)と、一時停止されたプラグイン(②)が表示されています。

②の下には、エラーの種類、ファイル、行番号が表示されます。原因が分かったら、そのプラグインの「無効化」(③)を押します。
最後に、右上の「リカバリーモードを終了」を押します。サイトを開くと、元どおり表示されました。無効化したプラグインの「再有効化」を押すと、エラーに戻ります。
メールが届かないときは
リカバリーモードのリンクはメールでしか届きません。メールが来ないときは、次の順に確かめます。
管理者メールアドレスを確かめる
メールの送り先は、「設定」→「一般」の「管理者メールアドレス」です。サイトを作ったときの制作会社のアドレスや、もう使っていないアドレスのままになっていないか、普段から見ておきます。
管理者メールアドレスは、変更すると新しいアドレスに確認メールが届き、リンクを押すまで切り替わりません。確認メールが届かずに変えられないときは、こちらの記事の方法が使えます。
WordPressには、管理者メールアドレスというものが存在します。最初にWordPress環境をつくった際に、登録するメールアドレスです。 通常、このメールアドレスを変更するには、新しいメールで承認が必要になります。 ただ、クライアントワークやテスト環境などで仮のメールアドレスを登録し...
リカバリーモードのメールだけ別のアドレスに送りたいときは、wp-config.php に次の1行を足します。
define( 'RECOVERY_MODE_EMAIL', 'you@example.com' );
メールは24時間に1通まで
WordPressの本体のコードでは、リカバリーモードのメールを送ると、そこから24時間は次のメールを送りません。送ろうとしてメールの送信に失敗した場合も、同じように24時間止まります。メールの設定をあとから直しても、すぐには送り直されません。
リカバリーモードを終了すると、この制限は解除されます。
そもそもメールが送れないサイト
WordPressのメールがサーバーの設定で届かないサイトでは、リカバリーモードのメールも届きません。お問い合わせフォームの通知が届かないサイトは、こちらの方法でメールの送り方を変えられます。
問い合わせフォームから送ったはずの通知メールが、どこにも届いていない。迷惑メールフォルダにも見当たらない。 WordPressは、初期設定のままだとサーバーのPHPから直接メールを送ります。送信元のアドレスは「wordpress@サイトのドメイン」。実在しないこともあるこのアドレスから、送信の認証...
メールを使わずに止める
メールがどうしても届かないときは、FTPやサーバーのファイルマネージャーで、wp-content/plugins の中にある原因のプラグインのフォルダ名を変えます(例:sample-broken-plugin を sample-broken-plugin-off に)。WordPressはそのプラグインを見つけられなくなり、無効化された状態になります。直したあとでフォルダ名を戻すと、もう一度「有効化」できます。
テーマが原因のときは、wp-content/themes の中のテーマのフォルダ名を変えると、ほかに入っているテーマに切り替わります。
どのプラグインが原因か分からないときは、デバッグモードでエラーの記録を残すと、ファイルの場所が分かります。
WordPressでサイトを作っていると、不具合が発生することもありますよね。それらを修正(デバッグ)するためには、その原因がどこにあるのかを探る必要があります。 そこで便利なのが、WordPressのデバッグモードです。管理画面内にエラー内容を表示できるので、そこから原因の究明に繋げられるわ...
エックスサーバーを使っているなら、サーバーパネルの「WordPressリカバリー」も使えます。
WordPressサイトの運営には、常に予期せぬトラブルがつきものです。サーバーの不具合やプラグインの競合、悪意のある攻撃など、さまざまな原因でサイトがダウンしたり、ログインできなくなったりするかもしれません。 このような状況に陥ったとき、自力での復旧は時間と労力がかかるほか、データを損失する...
まとめ
今日やっておくことは1つです。「設定」→「一般」の管理者メールアドレスを開き、そのアドレスに届いたメールを、今も読めているかを確かめます。
読めていないアドレスなら、変えておきます。メール自体がサイトから届かないなら、FTPかサーバーのファイルマネージャーに入れるかを、あわせて確かめておきます。
WordPressテーマ集











コメント