WordPressの管理画面(/wp-admin/)にログインしようとしたのに入れない。パスワードを入れても弾かれる、ログイン画面そのものが出ない、ログインボタンを押すとまたログイン画面に戻される——。サイトの更新も問い合わせ対応もできなくなるため、強い不安を感じる場面です。

ただ、ログイン不能は「何が起きているか」を一つ特定できれば、多くは自力で復旧できるトラブルです。やみくもにパスワードを試したりプラグインを消したりする前に、症状から原因を切り分けましょう。

この記事のゴールは次の2つです。

  • 症状から原因を特定し、順番どおりに復旧を進められる
  • 自力対応の限界ラインを持ち、乗っ取りが疑われる時は安全に切り替えられる

なお、ログイン画面の代わりに「真っ白」や「重大なエラー」が出る場合は、原因がPHP側にあります。あわせて真っ白画面(WSOD)の対処法「重大なエラーが発生しました」の対処法も参照してください。

症状別の早見表(まずここで切り分け)

ログイン不能は「どう入れないか」で原因がかなり絞れます。自分の症状に近い行から読んでください。

症状 まず疑う原因 該当セクション
パスワードが通らない/リセットメールが届かない パスワード忘れ・メール送信不良 原因1
「Cookieがブロックされています」と出る Cookie・キャッシュ・URL設定 原因2
ログインすると何度もログイン画面に戻る リダイレクトループ(URL/SSL設定) 原因3
/wp-login.php が404・ログイン画面が出ない ログインURL変更プラグイン 原因4
「ロックされました」「試行回数超過」と出る セキュリティプラグインのロックアウト 原因5
ログイン画面が真っ白/重大なエラー表示 PHP致命的エラー 原因6
急に入れず、心当たりのない変化がある 改ざん・乗っ取りの可能性 乗っ取りの章

最初に確認すること(最初の数分)

調査の前に状況を固定します。ここを飛ばすと切り分けが崩れます。

  • エラー文言を正確に読む:「Cookie…」「ロックされました」など、表示されている文言で原因がほぼ決まります。スクリーンショットを残しておきましょう。
  • 直前の変更を思い出す:サーバー移行、URL(http→https)変更、プラグイン追加・更新、functions.php 編集の直後は要注意です。
  • 別ブラウザ/シークレットウィンドウで試す:Cookie・キャッシュ起因かどうかが切り分けられます。
  • 作業ログを残す6/8 10:05 Cookieエラー確認 のように、時刻・確認・操作・結果を1行ずつ記録すると、引き継ぎが楽になります。

原因1: パスワードを忘れた・リセットメールが届かない

まずは正攻法のメールリセット

ログイン画面の「パスワードをお忘れですか?」からメールでリセットするのが基本です。届かない場合は、迷惑メールフォルダと、サーバーのメール送信設定を確認します。WordPressのメール送信はサーバーのPHPメール機能に依存するため、送信自体が失敗していることもあります。

メールで受け取れない場合は、次の代替手段に進みます。

代替1: phpMyAdminでパスワードを再設定

データベース管理ツール(phpMyAdmin)から直接リセットできます。WordPress公式でも案内されている方法です。

  1. phpMyAdminで対象データベースの wp_users テーブルを開く
  2. 該当ユーザーの行を編集し、user_pass の値を新しいパスワードに置き換える
  3. このとき関数の欄で MD5 を選んで保存する

MD5 で保存した値は、次回ログイン時にWordPressが自動的により安全な方式へ再ハッシュします。そのため、既存のハッシュ形式を気にせずログインを取り戻せます。

なお、WordPress 6.8(2025年4月)以降、パスワードのハッシュ方式は標準でbcryptに変わりました。ただし後方互換が維持されており、MD5 で保存した値も次回ログイン時にbcryptへ自動で再ハッシュされるため、この方法は現在も問題なく使えます。SSHが使える環境なら、次の代替2(WP-CLI)のほうがよりクリーンです。

テーブル接頭辞は環境により wp_ 以外(例: wp_xxxx_users)の場合があります。必ず実際の接頭辞に読み替えてください。

代替2: WP-CLIが使える場合

サーバーにSSH+WP-CLIが入っているなら、これが最も確実です。

# 既存ユーザーのパスワードを更新
wp user update admin --user_pass='新しい強いパスワード'

# ランダムな新パスワードを発行して表示
wp user reset-password admin --show-password

# 管理者ユーザーを新規作成(既存管理者に入れない時)
wp user create newadmin admin@example.com --role=administrator --user_pass='強いパスワード'

代替3: functions.phpに一時コードを追記

phpMyAdminもWP-CLIも使えない場合の最終手段です。FTPでテーマの functions.php を開き、<?php の直後に次の1行を一時的に追記します。

wp_set_password( '新しいパスワード', 1 );

1 は対象ユーザーのID(通常は最初の管理者)です。ログインできたら、この1行は必ず削除してください。残したままだと、ページが読み込まれるたびにパスワードが再設定され続けます。

原因2: 「Cookieがブロックされています」と表示される

日本語環境では、概ね次のように表示されます。

Cookie がブロックされているか、お使いのブラウザーで未対応のようです。WordPress を使うには Cookie を有効化する必要があります。

英語では「Cookies are blocked or not supported by your browser.」です。WordPressがログイン確認用の wordpress_test_cookie をセットできないと出ます。

対処は次の順で行います。

  1. ブラウザのCookieとキャッシュを削除し、別ブラウザ/シークレットウィンドウでも試す
  2. キャッシュ系プラグインやサーバーキャッシュを使っている場合はキャッシュを削除(特にサーバー移行直後)
  3. それでも直らなければ、後述のWordPressアドレス/サイトアドレス設定を確認する

原因3: ログインすると何度もログイン画面に戻る(リダイレクトループ)

ログイン自体は通っているのに、管理画面に進めず何度もログイン画面へ戻される場合は、URLやSSLの設定不整合が典型です。

WordPressアドレス/サイトアドレスの不一致

「設定 > 一般」の WordPress アドレス (URL)サイトアドレス (URL) は別物です。どちらも https:// を含め、末尾スラッシュなしが原則。ここがずれているとループが起きます。管理画面に入れないので、wp-config.php で一時的に固定します(/* That's all, stop editing! *//日本語版「編集が必要なのはここまでです !」より上に記述)。

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

SSL(https)まわりのループ

FORCE_SSL_ADMIN を有効にしている環境で、リバースプロキシやCDNの配下にあると、HTTPSの判定(X-Forwarded-Proto)が正しく渡らず無限リダイレクトになることがあります。この場合はサーバー側のプロキシ設定の問題なので、ホスティング側の案内に従う必要があります

.htaccessの不整合

.htaccess のリライトルールが壊れている場合もループの原因になります(Apache環境の場合)。管理画面に入れたら「設定 > パーマリンク」で「変更を保存」を押すと .htaccess が再生成されます。入れない場合は、FTPで .htaccess を一旦リネームし、WordPress標準のルールに置き換えます。

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

.htaccess はApache用です。Nginxでは使われないため、Nginx環境ではサーバー設定側で対応します。

原因4: ログイン画面が出ない・URLが変わった

/wp-login.php にアクセスして404になる、ログイン画面が表示されない場合は、ログインURLを変更するセキュリティプラグイン(SiteGuard WP Plugin など)が原因のことがあります。攻撃対策としてログインURLを変えているのを失念しているケースです。

  • SiteGuard WP Plugin の場合、ログインURLの初期値は login_ + 5桁の数字(例: login_12345)です。通常は /wp-admin/ にアクセスすると変更後のログインURLへリダイレクトされるため、そこでURLを確認できます。
  • ただし「管理ページからログインページへリダイレクトしない」設定を有効にしていると、リダイレクトでは分かりません。その場合は、FTPで該当プラグインのフォルダ名を変更して一時的に無効化し、標準の /wp-login.php でログインしてから設定を確認します。

変更後のログインURLは、パスワードと同様にパスワードマネージャ等に控えておくと、こうした締め出しを防げます。

原因5: ロックアウトされた(試行回数制限・2FA)

「ログイン試行回数を超過しました」「一時的にロックされました」と出る場合は、セキュリティプラグインのブルートフォース対策が働いています。正当な利用者でも、パスワードを何度か間違えるとロックされます。

基本の考え方は、①時間をおく/別IPから試す ②ロックを解除する ③それも無理ならFTPでプラグインを一時無効化 の順です。主要プラグインの傾向は次のとおりです(仕様は変わるため、各プラグインの最新ドキュメントも確認してください)。

  • Wordfence:ロックアウト画面のメール解除(unlock email)機能や、管理画面の「Firewall > Blocking」での解除があります。自分が締め出された場合の最終手段として、wp-content/plugins/wordfence フォルダのリネームによる無効化が公式に案内されています。
  • Limit Login Attempts Security(旧 Limit Login Attempts Reloaded 系の現行名):別IPから入るか、wp-content/plugins/limit-login-attempts-reloaded をリネームして無効化し、ログイン後に自分のIPをホワイトリストに追加します。
  • SiteGuard WP Plugin:ログイン失敗のロックや画像認証(CAPTCHA)でつまずくことがあります。締め出された場合はFTPでフォルダをリネームして無効化します。
  • Solid Security(旧 iThemes Security):ローカルブルートフォース保護で一時ロック/恒久BANがあります。解除手順はバージョンにより異なるため、管理画面・公式ドキュメントを確認してください。

FTPでプラグインフォルダをリネームすれば、そのプラグインは一時停止になります。設定やデータは残るので、ログインを取り戻してから設定を直し、フォルダ名を元に戻してください。

原因6: ログイン画面が真っ白・重大なエラーが出る

ログイン画面自体が真っ白、または「このサイトで重大なエラーが発生しました」と表示される場合は、ログインの問題ではなくPHPの致命的エラーです。プラグイン・テーマ・PHPバージョンが原因のことが多く、切り分けの入口が異なります。

原因を調べるには、wp-config.php に次を追記して wp-content/debug.log を確認します。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

調査が終わったら、これらの記述は元に戻すか削除してください。

改ざん・乗っ取りを疑うサイン

次のような状況が重なる場合は、単なる設定ミスではなく改ざん・乗っ取りの可能性があります。

  • 正しいはずのパスワードが急に通らず、リセットメールも届かない
  • 身に覚えのない管理者ユーザーが増えている
  • ホスティング会社からアカウント停止・マルウェア配布の通知が来た
  • 検索結果やブラウザで危険サイト警告が出ている

これらは乗っ取りの兆候として公式も挙げているものですが、これだけで断定はできません。ただし該当する場合は、復旧より先に被害の封じ込め(全パスワードの変更、アクセス経路の見直し)が必要です。手順は改ざん発覚時の初動対応を参照してください。

身に覚えのない管理者の追加や不正ファイルが見つかった、復旧の見込みが立たない、24時間以上ログインできず業務が止まっている——こうした場合は、原因調査と復旧を同時に進める必要があります。判断が難しいときは、障害復旧サービスのような専門対応へ早めに切り替えるほうが、結果的に停止時間と損失を抑えられます。

再発防止:もうログインで詰まらないために

  • パスワードと2段階認証(2FA)の管理:使い回しをやめ、パスワードマネージャで管理する。2FAを使う場合はリカバリーコードも保管する
  • 管理者アカウントの整理:不要な管理者を削除し、誰がいつログインするか把握する
  • ログインURL・設定値を控える:ログインURLを変更している場合は、その値を必ず記録しておく
  • ログイン保護の設計:対策はWordPressログイン防御の解説を参考に、締め出しが起きない範囲で組む
  • バックアップ:いざという時に戻せるよう、ファイル+データベースの自動バックアップを用意する

社内で継続的に運用しにくい場合は、運用保守サービスのような定期保守で、ログイン保護やバックアップ、監視をまとめて任せる方法もあります。

よくある質問(FAQ)

Q. パスワードリセットのメールが届きません。どうすればいいですか?

迷惑メールフォルダを確認しても無い場合は、メール送信自体が失敗している可能性があります。phpMyAdminで wp_usersuser_passMD5 関数で再設定する、WP-CLIの wp user update を使う、または functions.phpwp_set_password() を一時追記する方法で、メールに頼らずリセットできます。

Q. ログインすると何度もログイン画面に戻されます。

リダイレクトループの典型で、WordPressアドレス/サイトアドレスの不一致やSSL設定が原因です。wp-config.phpWP_HOMEWP_SITEURL を正しいURLで固定し、Apache環境ならパーマリンク再保存で .htaccess を再生成します。リバースプロキシ配下ではHTTPS判定の設定も確認します。

Q. ログイン画面(/wp-login.php)が404で表示されません。

SiteGuard WP PluginなどログインURLを変更するプラグインが有効な可能性があります。/wp-admin/ にアクセスして変更後URLへリダイレクトされるか確認し、分からなければFTPで該当プラグインのフォルダ名を変更して一時無効化し、標準URLでログインしてください。

Q. 正しいパスワードなのに急に入れず、リセットメールも来ません。

設定不良のこともありますが、身に覚えのない管理者の増加やホストからの警告を伴う場合は、乗っ取りの可能性があります。まず全アクセス経路のパスワードを変更し、改ざん調査の初動に切り替えてください。

まとめ

WordPressにログインできない時は、技術力よりも切り分けの順番が大切です。

  1. エラー文言と直前の変更を確認し、症状から原因を特定する
  2. パスワード起因なら、メール→phpMyAdmin→WP-CLI→functions.phpの順で再設定
  3. Cookie・リダイレクトループは、キャッシュ削除とURL/SSL設定の見直し
  4. ログイン画面が出ない・ロックは、URL変更プラグインやセキュリティプラグインをFTPで一時無効化
  5. 乗っ取りの兆候があれば、復旧より先に封じ込め

焦って操作を増やすほど切り分けが難しくなります。まず「どう入れないか」を一つ特定することが、最短の復旧につながります。