WordPressで管理画面にアクセスできなくなったときの対処法

既存サイトをコピーして新規サイトを構築することになったが、テーブルプレフィックス(接頭辞)がコピー元とコピー先で同じになってしまうのが嫌だったので、コピー先のテーブルプレフィックスを変更することにした。テーブルプレフィックスの変更は wp_config.php の $table_prefix を変更すれば良い。

// wp_config.php
// $table_prefix = 'wp_'; から変更
$table_prefix  = 'hoge_';

これで、テーブルプレフィックスとして「hoge_」が利用されるようになるので、それに合わせてテーブル名を変更する。

ALTER TABLE `wp_comments` RENAME `hoge_comments`;
ALTER TABLE `wp_links` RENAME `hoge_links`;
ALTER TABLE `wp_options` RENAME `hoge_options
ALTER TABLE `wp_postmeta` RENAME `hoge_postmeta`;
ALTER TABLE `wp_posts` RENAME `hoge_posts`;
ALTER TABLE `wp_term_relationships` RENAME `hoge_term_relationships`;
ALTER TABLE `wp_term_taxonomy` RENAME `hoge_term_taxonomy`;
ALTER TABLE `wp_terms` RENAME `hoge_terms`;
ALTER TABLE `wp_usermeta` RENAME `hoge_usermeta`;
ALTER TABLE `wp_users` RENAME `hoge_users`;

表示確認したところ特に問題無し。次に管理画面にアクセスしようとログイン画面を表示。ここも問題無し。ユーザー名とパスワードを入力しログインをクリック。すると下記の画面がでて管理画面にアクセスできなくなってしまった。

このページにアクセスするための十分なアクセス権がありません。

このページにアクセスするための十分なアクセス権がありません。

調べたところ、optionsテーブルとuser_metaテーブル内にプレフィックス付きのデータがあるのを発見。プレフィックス直でデータに使用してるのってどうなん…というのは置いといて、下記のような感じでデータを更新。

UPDATE hoge_options SET option_name = 'hoge_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE hoge_usermeta SET meta_key = 'hoge_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE hoge_usermeta SET meta_key = 'hoge_user_level' WHERE meta_key = 'wp_user_level';

これで問題なく管理画面にもログインすることができた。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく