2026年7月4日
2026年7月4日
WordPressのプラグイン更新でサイトが壊れたときの復旧手順(リカバリーモード・WP-CLI・旧版に戻す)
プラグインを更新した直後に画面が真っ白になる、「このサイトで重大なエラーが発生しました。」と表示される、管理画面に入れなくなる、といった症状が出ることがあります。多くは、更新したプラグインのコードが PHP のエラーを起こしているか、他のプラグイン・テーマ・PHP のバージョンと合わなくなったことが原因です。
この記事では、まずサイトを表示できる状態に戻し、原因を確かめ、更新前の版に戻すまでの手順を説明します。WP-CLI のコマンドは WordPress 7.1.4・WP-CLI の Docker イメージで動作を確かめています(2026年11月時点)。
最初にやること:原因のプラグインを特定する
致命的なエラーが起きると、WordPress は管理者メールアドレス宛てに「[サイト名] サイトで技術的な問題が発生しています」という件名のメールを送ります。本文には、エラーを起こしたプラグインの名前、エラーの内容、リカバリーモードに入るためのリンクが書かれています。
- 送信先は「設定」→「一般」の管理者メールアドレスです。
wp-config.phpでRECOVERY_MODE_EMAILを定義していれば、そちらに送られます。 - 同じメールは、既定では1日に1回までしか送られません。リンクの有効期限も既定で1日です。
- メールが届かない場合は、サーバーのメール送信設定や迷惑メールフォルダーを確認し、後述のエラーログで原因を探します。
直前に更新したプラグインが1つだけなら、それが原因の第一候補です。複数を同時に更新した場合は、メールかエラーログで特定します。
方法1:リカバリーモードで管理画面に入って無効化する
- メールにあるリカバリーモードのリンクを開き、管理者アカウントでログインします。
- 「プラグイン」画面を開くと、エラーを起こしたプラグインが表示されています。リカバリーモードでは、そのプラグインがあなたのブラウザーでだけ一時停止されています。
- 原因のプラグインを 無効化 します。
- 画面上部の「リカバリーモードを終了」で通常の表示に戻ります。
リカバリーモードは、リンクを開いたブラウザーにだけ効きます。一般の訪問者には、プラグインを無効化するまでエラー画面が表示され続けます。
方法2:プラグインのフォルダー名を変えて止める
メールが届かない、リンクの期限が切れた、という場合は、FTP・SFTP やレンタルサーバーのファイルマネージャーで、プラグインのフォルダー名を変えます。
wp-content/plugins/example-plugin ← 原因のプラグイン
wp-content/plugins/example-plugin.off ← 名前を変える
WordPress は有効なプラグインのファイルが見つからないと、そのプラグインを読み込まずに起動します。管理画面に入れるようになったら、まず「プラグイン」画面を開きます。見つからなかったプラグインはエラーのため無効化された、と表示され、無効の扱いになります。そのあとでフォルダー名を元に戻し、修正版が出るまで無効のままにしておきます。
どのプラグインが原因か分からないときは、wp-content/plugins フォルダー自体の名前を変えると、すべてのプラグインが止まります。表示が戻ったら名前を戻し、1つずつ有効化して原因を探します。
方法3:WP-CLI で無効化する
SSH で入れて WP-CLI が使えるなら、コマンドで無効化できます。サイトのディレクトリ(wp-config.php がある場所)で実行します。
# 状態を確認する(壊れたプラグインがあると、ここでもエラーになることがある)
wp plugin list --fields=name,status,version
# プラグインを読み込まずに一覧を出す
wp plugin list --fields=name,status,version --skip-plugins
# 原因のプラグインを無効化する
wp plugin deactivate example-plugin --skip-plugins
壊れたプラグインがあると、WP-CLI もそのプラグインを読み込んで同じエラーで止まります。--skip-plugins を付けると、プラグインを読み込まずに WordPress を起動するので、無効化の操作ができます。テーマが原因の場合は --skip-themes も付けます。
エラーの内容を確認する
原因を確かめたり、開発元に報告したりするには、エラーログを見ます。wp-config.php の「編集が必要なのはここまでです」の行より上に、次の3行を書きます(既に WP_DEBUG の行があれば書き換えます)。
<?php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
この設定では、エラーが画面には出ず、wp-content/debug.log に記録されます。WP_DEBUG_DISPLAY を true にすると訪問者にもエラーの内容が見えてしまうので、本番では false にします。原因が分かったら WP_DEBUG を false に戻し、debug.log を削除します。詳しくは WordPressのデバッグモードを有効にする方法 を参考にしてください。
ログによく出るのは次のようなエラーです。
| ログの例 | 考えられる原因 |
|---|---|
Call to undefined function |
依存する別のプラグインが無効、または古い |
Cannot redeclare |
同じ関数を2つのプラグイン(またはテーマ)が定義している |
syntax error, unexpected |
サーバーの PHP が古く、新しい書き方に対応していない |
Allowed memory size ... exhausted |
PHP のメモリ上限が足りない |
PHP のバージョンが原因の場合は、プラグインのページにある「PHP 要件」とサーバーの PHP のバージョンを比べます。
更新前の版に戻す
無効化したままでは、そのプラグインの機能が使えません。修正版が出るまで、更新前の版に戻す方法があります。
wordpress.org で配布されているプラグイン
WP-CLI で版を指定して入れ直せます。--force で、入っている版を上書きします。
# 例: 1.6.5 に戻す
wp plugin install example-plugin --version=1.6.5 --force
wp plugin activate example-plugin
# 修正版が出るまで、このプラグインの自動更新を止める
wp plugin auto-updates disable example-plugin
WP-CLI が使えない場合は、wordpress.org のプラグインページの「Advanced View」を開くと、下部の「Previous Versions」から過去の版の ZIP をダウンロードできます。ZIP を展開し、SFTP で wp-content/plugins/ のフォルダーを差し替えます。自動更新は「プラグイン」画面の「自動更新を無効化」で止められます。
wordpress.org 自身が注意しているとおり、古い版には修正済みの脆弱性が残っていることがあります。戻すのは修正版が出るまでの一時的な措置にし、更新履歴(Changelog)でセキュリティ修正が含まれていないかを確認してください。
有料プラグイン
有料プラグインは wordpress.org にないため、上のコマンドは使えません。販売元のアカウントページで過去の版を配布しているか、サポートに問い合わせて入手します。
データベースの変更に注意する
プラグインによっては、更新時にデータベースの表や設定を新しい形式に書き換えます。この場合、ファイルだけ旧版に戻しても正しく動かないことがあります。旧版でも不具合が続くときは、更新前に取ったバックアップ(ファイルとデータベースの両方)から戻します。
WordPress に備わっている保護の範囲
WordPress には更新失敗に備えた仕組みがありますが、すべての場合を防ぐものではありません。
| 仕組み | 入った版 | 働く場面 |
|---|---|---|
| リカバリーモード | 5.2 | 致命的なエラーを検知すると、管理者にメールを送り、管理画面に入る手段を用意する |
| 手動更新失敗時のロールバック | 6.3 | 更新処理そのもの(ダウンロード・展開・ファイルの移動)が失敗したとき、wp-content/upgrade-temp-backup/ に退避した旧版を戻す |
| 自動更新のロールバック | 6.6 | プラグインの 自動更新 の後にサイトを確認し、致命的なエラーが出たら旧版に戻して管理者にメールする |
手動で更新して、更新処理自体は成功したがサイトが壊れた、という場合は自動では戻りません。この記事の手順で対応します。
再発を防ぐために
- 更新前にバックアップを取る。 ファイルとデータベースの両方を、戻せる形で残します。
- 一度に1つずつ更新する。 まとめて更新すると、どれが原因か分かりにくくなります。
- 更新履歴を読む。 大きな版の変更(例: 2.x から 3.x)や、PHP・WordPress の要件が上がる更新は特に注意します。
- ステージング環境で先に試す。 本番と同じ構成の検証用サイトで更新し、主なページと機能を確認してから本番に反映します。
- 自動更新の対象を選ぶ。 サイトの中心になるプラグインは自動更新を止めて手動で更新し、影響の小さいものだけ自動にする、という使い分けもできます。
まとめ
- エラーを起こしたプラグインは、管理者宛てのメールか
debug.logで特定する - リカバリーモードのリンク、フォルダー名の変更、
wp plugin deactivate --skip-pluginsのいずれかで止める - wordpress.org のプラグインは
wp plugin install スラッグ --version=版 --forceで旧版に戻せる。旧版は一時的な措置にとどめる - データベースが書き換わる更新もあるので、更新前のバックアップを用意しておく
- 手動更新で起きた不具合は自動では戻らない
画面が真っ白になる症状全般の確認手順は WordPressのリカバリーモードの使い方 も参考にしてください。