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公式でも案内されている方法です。
- phpMyAdminで対象データベースの
wp_usersテーブルを開く - 該当ユーザーの行を編集し、
user_passの値を新しいパスワードに置き換える - このとき関数の欄で
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 をセットできないと出ます。
対処は次の順で行います。
- ブラウザのCookieとキャッシュを削除し、別ブラウザ/シークレットウィンドウでも試す
- キャッシュ系プラグインやサーバーキャッシュを使っている場合はキャッシュを削除(特にサーバー移行直後)
- それでも直らなければ、後述の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バージョンが原因のことが多く、切り分けの入口が異なります。
- 真っ白の場合 → WordPressが真っ白になる原因と対処法
- 「重大なエラー」表示の場合 → 「重大なエラーが発生しました」の原因と対処法
原因を調べるには、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_users の user_pass を MD5 関数で再設定する、WP-CLIの wp user update を使う、または functions.php に wp_set_password() を一時追記する方法で、メールに頼らずリセットできます。
Q. ログインすると何度もログイン画面に戻されます。
リダイレクトループの典型で、WordPressアドレス/サイトアドレスの不一致やSSL設定が原因です。wp-config.php に WP_HOME と WP_SITEURL を正しいURLで固定し、Apache環境ならパーマリンク再保存で .htaccess を再生成します。リバースプロキシ配下ではHTTPS判定の設定も確認します。
Q. ログイン画面(/wp-login.php)が404で表示されません。
SiteGuard WP PluginなどログインURLを変更するプラグインが有効な可能性があります。/wp-admin/ にアクセスして変更後URLへリダイレクトされるか確認し、分からなければFTPで該当プラグインのフォルダ名を変更して一時無効化し、標準URLでログインしてください。
Q. 正しいパスワードなのに急に入れず、リセットメールも来ません。
設定不良のこともありますが、身に覚えのない管理者の増加やホストからの警告を伴う場合は、乗っ取りの可能性があります。まず全アクセス経路のパスワードを変更し、改ざん調査の初動に切り替えてください。
まとめ
WordPressにログインできない時は、技術力よりも切り分けの順番が大切です。
- エラー文言と直前の変更を確認し、症状から原因を特定する
- パスワード起因なら、メール→phpMyAdmin→WP-CLI→functions.phpの順で再設定
- Cookie・リダイレクトループは、キャッシュ削除とURL/SSL設定の見直し
- ログイン画面が出ない・ロックは、URL変更プラグインやセキュリティプラグインをFTPで一時無効化
- 乗っ取りの兆候があれば、復旧より先に封じ込め
焦って操作を増やすほど切り分けが難しくなります。まず「どう入れないか」を一つ特定することが、最短の復旧につながります。