※取り急ぎの覚書です。あとで編集するかもしれません。
症状:
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?