WordPress ログイン画面・管理画面が真っ白で入れないときの対処|プラグインを外から止める方法

結論

WordPress のログイン画面(wp-login.php)や管理画面(/wp-admin/)が真っ白で入れないときは、管理画面を使わずに、外からプラグインやテーマを止めるのが最短の復旧手段です。ログイン画面でもプラグインとテーマの functions.php は読み込まれるので、そこで致命的エラーが起きると、ログインする前の段階で画面が白くなります。

手段は、使える環境に合わせて次の順で選びます。

  1. リカバリーモードのメールが管理者に届いていれば、そのリンクから入り、原因のプラグインを停止する
  2. WP-CLI が使えるサーバーなら wp plugin deactivate --all で一括停止する
  3. どちらも無理なら、FTP やサーバーのファイルマネージャーで wp-content/plugins のフォルダ名を変える

止めて画面が戻ったら、プラグインを1つずつ有効化し直して原因を特定します。原因の特定にエラー内容が必要なら、WP_DEBUG_LOG でログを出します(手順は WordPress 画面が真っ白になる原因とWP_DEBUGでの調べ方 にまとめています)。

原因・仕組み

ログイン画面・管理画面が白くなる原因は、大きく次の3つです。

  • プラグインの致命的エラー: 更新直後、PHP のバージョンを上げた直後に起きやすい
  • テーマの functions.php の誤り: 管理画面でも読み込まれるため、閉じ括弧の不足などで全画面が止まる
  • ファイル先頭・末尾の余計な文字: 公式の Common WordPress Errors は、「Headers already sent」エラーの原因として、開始タグの前や終了タグの後の空白・文字を挙げています。ログイン処理は Cookie を送るためにヘッダーを使うので、この状態だとログインできない・白い画面のまま、という症状になります

WordPress 5.2 で入ったリカバリーモード(致命的エラー保護)は、致命的エラーが起きたときにエラー画面を出し、管理者のメールアドレスに秘密のリンクを送る仕組みです。リンクを開くとブラウザに Cookie が設定され、エラーを起こしたプラグインを止めた状態で管理画面に入れます。送り先は RECOVERY_MODE_EMAIL 定数や recovery_mode_email フィルターで変えられます。ただし、メールがサーバーから送れない環境や、wp-config.php 自体の記述ミスでは働きません。

管理画面に入れないときにフォルダ名を変える方法が効くのは、WordPress が「有効なプラグイン」の一覧(オプション active_plugins)にあっても、ファイルが存在しないプラグインは読み込まないからです。

手順(サンプルコード)

1. FTP・ファイルマネージャーで止める

公式の Common WordPress Errors の手順どおり、wp-content/plugins を plugins_old などに名前変更すると、すべてのプラグインが読み込まれなくなります。

wp-content/plugins       →  wp-content/plugins_old       (全プラグインを止める)
wp-content/plugins/foo   →  wp-content/plugins/foo.off   (1つだけ止める)

ログインできたら、plugins_old を plugins に戻し、管理画面の「プラグイン」一覧で1つずつ有効化して、白くなったものが原因です。テーマが原因のときは、wp-content/themes/ の使用中のテーマのフォルダ名を変えます。

2. WP-CLI で止める

SSH が使えるサーバーでは、WP-CLI の公式コマンドで止められます。

wp plugin deactivate --all
wp plugin deactivate --all --exclude=hello,wordpress-seo   # 一部を残す
wp plugin deactivate foo                                    # 1つだけ止める

3. 自分で書いたコードが原因のとき

テーマや自作プラグインのファイルの先頭に、<?php より前の空白や BOM が入っていないかを確認します。PHP だけのファイルは、終了タグ ?> を書かないでおくと、末尾の空白による事故を防げます。

<?php
// functions.php の先頭は必ず <?php から始める(前に空行・空白・BOM を入れない)
add_action( 'login_enqueue_scripts', 'mytheme_login_style' );
function mytheme_login_style() {
    wp_enqueue_style( 'mytheme-login', get_theme_file_uri( 'login.css' ), array(), '1.0' );
}
// ファイル末尾に PHP の終了タグは書かない(一行コメントの中でも終了タグは PHP を抜けるので注意)

動作確認(検証環境と結果)

WordPress 7.1.2(ja)/PHP 8.2.12 の CLI 検証環境で、テスト用プラグインを有効化したあと、そのフォルダ名を変えて挙動を確かめました(php run.php wl2_rename.php、ログは tests/login-admin-white-screen-cannot-login.md)。

active_plugins(before)=ks-broken/ks-broken.php
valid(before)=ks-broken.php
valid(after rename)=
invalid: ks-broken/ks-broken.php => Plugin file does not exist.
active_plugins(after validate)=
fatal_handler_enabled=true
recovery_mode_active=false
  • フォルダ名を変えると、active_plugins に残っていても、読み込み対象(wp_get_active_and_valid_plugins())から外れました。これが「名前を変えると止まる」理由です。
  • 管理画面のプラグイン一覧で使われる validate_active_plugins() を呼ぶと、「Plugin file does not exist.」として有効化の一覧から外されました。つまり、名前を戻しても自動では再有効化されず、手で有効化し直す必要があります。
  • 手順3の functions.php の例は php -l で構文エラーが無いことだけを確認しました(ログイン画面での表示は未検証)。
  • 致命的エラー保護は有効でした。WP-CLI はこの環境に無いため、上の wp plugin deactivate は未検証です(コマンドは公式ドキュメントで確認)。メール送信も確認していません。

WordPress ログイン画面・管理画面が真っ白で入れないときの対処の注意点

  • フォルダ名の変更や wp-config.php の編集の前に、ファイルとデータベースのバックアップを取ります。
  • plugins ごと名前を変えた場合、戻したあとは全プラグインが停止した状態です。セキュリティ系・キャッシュ系のプラグインを先に戻し、停止中の時間を短くします。
  • リカバリーモードのリンクは管理者アドレスに届きます。管理者アドレスが古いと受け取れないので、平常時に確認しておきます。
  • ログイン画面だけ白い場合は、ログイン画面をカスタマイズするコード(login_enqueue_scripts や login_head など)を疑います。

WordPress ログイン画面・管理画面が真っ白で入れないときの対処でよくあるミス

  • プラグインを全部削除してしまう。名前変更で十分で、削除すると設定が戻らないことがあります。
  • キャッシュ系プラグインの止め忘れで、直ったのに白い画面が表示され続ける。ブラウザとサーバーのキャッシュも消します。
  • functions.php を編集し直すたびに、ファイル先頭に空行が入っていることに気づかない。
  • 原因を特定しないまま全部を元に戻し、また白い画面になる。

WordPress ログイン画面・管理画面が真っ白で入れないときの対処のチェックリスト

  • [ ] バックアップを取った
  • [ ] リカバリーモードのメールが届いていないか確認した
  • [ ] WP-CLI または FTP でプラグインを止めた
  • [ ] ログインできたら1つずつ有効化して原因を特定した
  • [ ] テーマが原因なら、テーマのフォルダ名を変えて確認した
  • [ ] 自作コードの先頭の空白・BOM、末尾の ?> を確認した

WordPress ログイン画面・管理画面が真っ白で入れないときの対処のFAQ(よくある質問)

Q. フロントは表示されるのに、管理画面だけ白いのはなぜですか。
A. 管理画面でだけ読み込まれるプラグインのコードや、管理画面用のメモリ上限(WP_MAX_MEMORY_LIMIT)が原因のことがあります。

Q. フォルダ名を戻したら、プラグインは自動で有効に戻りますか。
A. 検証では、管理画面の一覧を開いた時点で有効化の一覧から外れました。戻したあとは手で有効化し直します。

Q. パスワードを忘れて入れないのとは違いますか。
A. 違います。白い画面は PHP のエラーで、パスワードの問題ではありません。ログインフォーム自体が表示されないときは、まず本記事の手順でプラグインを止めます。

筆者の見解(WordPress ログイン画面・管理画面が真っ白で入れないときの対処)

管理画面に入れない状況では、原因探しより先に「外から止める手段」を持っているかどうかが復旧時間を決めると考えています。私見では、FTP の接続情報と管理者メールアドレスを平常時に確認しておくことが、いちばん安上がりな備えです。検証でも分かったとおり、フォルダ名の変更は有効化の状態を外してしまうので、戻したあとに何を有効化し直すか、事前にプラグインの一覧を控えておくと安心です。

WordPress ログイン画面・管理画面が真っ白で入れないときの対処の関連項目

出典(一次情報)

タイトルとURLをコピーしました