既存サイトをコピーして新規サイトを構築することになったが、テーブルプレフィックス(接頭辞)がコピー元とコピー先で同じになってしまうのが嫌だったので、コピー先のテーブルプレフィックスを変更することにした。テーブルプレフィックスの変更は 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';
これで問題なく管理画面にもログインすることができた。