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:リカバリーモードで管理画面に入って無効化する

  1. メールにあるリカバリーモードのリンクを開き、管理者アカウントでログインします。
  2. 「プラグイン」画面を開くと、エラーを起こしたプラグインが表示されています。リカバリーモードでは、そのプラグインがあなたのブラウザーでだけ一時停止されています。
  3. 原因のプラグインを 無効化 します。
  4. 画面上部の「リカバリーモードを終了」で通常の表示に戻ります。

リカバリーモードは、リンクを開いたブラウザーにだけ効きます。一般の訪問者には、プラグインを無効化するまでエラー画面が表示され続けます。

方法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のリカバリーモードの使い方 も参考にしてください。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲