WordPressにログインしたのに、ホームにリダイレクトされる

※取り急ぎの覚書です。あとで編集するかもしれません。

症状:

WordPressのログイン画面からログイン後、何のエラーもなしにホームにリダイレクトされてしまう。

ログイン後、admin/index.phpにアクセスすると「You do not have sufficient permissions to access this admin page. Reason: The current user doesn’t have the “read” capability that is required to access the “ダッシュボード” menu item.」とのエラーメッセージが出る。
他のページの場合は、ただ画面が真っ白(何も返ってこない)になる場合も。

原因:

データベースのテーブルプレフィックス(接頭辞)を変更した(ため、ユーザーの権限が正常に取得できない)
※すべての同じ症状がこの原因というわけではないです。あくまで可能性の一つです。

解決方法:

  • 「wp_rename_(※現在のテーブルプレフィックス)usermeta」テーブルのoption_name「wp_(※変更前のプレフィックス)user_level」
  • 「wp_rename_(※現在のテーブルプレフィックス)usermeta」テーブルのoption_name「wp_(※変更前のプレフィックス)capabilities」
  • 「wp_rename_(※現在のテーブルプレフィックス)options」テーブルのmeta_key「wp_(※変更前のプレフィックス)user_roles」

のプレフィックス(接頭辞)を現在のプレフィックスに変更する

DBデータの例:

変更前のプレフィックス:
wp_
変更後のプレフィックス:
wp_rename_
修正するテーブル名:
wp_rename_options
修正前
option_id option_name option_value autoload
(number) wp_user_roles (longtext) (varchar)
修正後
option_id option_name option_value autoload
(number) wp_rename_user_roles (longtext) (varchar)
修正するテーブル名:
wp_rename_usermeta
修正前
umeta_id user_id meta_key meta_value
(number) (number) wp_user_level (longtext)
(number) (number) wp_capabilities (longtext)
修正後
umeta_id user_id meta_key meta_value
(number) (number) wp_rename_user_level (longtext)
(number) (number) wp_rename_capabilities (longtext)

理由:

DBのデータには「データベーステーブルの接頭辞」が含まれているものがあるが、各DBテーブルの名前変更とwp-config.phpの$table_prefixを変更しただけでは、DBに保存されている内容までは変更されません。よって、ユーザーの権限が取得できず、管理画面にアクセスできる権限のないユーザーとなってしまうため、ホームにリダイレクトされていたようです。

参照:

WordPress.org Forums:
The “read” capability that is required to access the “Dashboard” menu item?