レンタルサーバ上のWordPressのデータをローカルに持ってきたときや、ローカルで開発していたデータをサーバへアップした時など、ドメインやURLをデータベース一括編集する覚え書き。
方法は、phpMyAdminでデータベースを編集する方法と、DBを置き換えするスクリプト「Search Replace DB 」を使う方法です。
操作は、ちょっと間違えるとデータベースが壊れることもあるので操作は注意が必要。
万一に備えて、データベースを編集する前にバックアップを取ってから編集しましょう。
phpMyAdminでデータベースを直接編集する
phpMyAdminにログインして該当のデータベースを開きます。
WordPressをインストールしてデフォルトで生成されるテーブルは12個です。(WP4.4以降)
wp__commentmeta | コメントのメタ情報 |
wp_comments | コメントの情報 |
wp_links | リンク関連データ |
(●)wp_options | サイトURL、WordPressURLなど各種設定情報 |
(●)wp_postmeta | 投稿のメタ情報 |
(●)wp_posts | 投稿をはじめ固定ページ、カスタム投稿などの情報 |
wp_terms | カテゴリ、タグやスラッグなどの情報 |
wp_termmeta | 新しいテーブル タームのメタ情報 |
wp_term_relationships | 投稿とカテゴリ、タグを関連づけている |
wp_term_taxonomy | カテゴリ、タグ分類の情報 |
wp_usermeta | ユーザのメタ情報 |
wp_users | ユーザーの情報 |
URLなどの情報が含まれているテーブルは
- wp_options
- wp_postmeta
- wp_posts
です。(利用してるプラグインによってその他のテーブルもある場合あり)
基本的に上記の3テーブルを対象にデータの検索置換を行います。
データベースを開いた状態で、SQLタブをクリック
SQLにあるテキストエリアに置換用SQL文を入力またはコピペします。
以下が検索置換用SQL文です
UPDATE `wp_posts` SET guid=REPLACE (guid,'変更前のURL','変更後のURL');
UPDATE `wp_posts` SET post_content=REPLACE (post_content,'変更前のURL','変更後のURL');
UPDATE `wp_options` SET option_value=REPLACE (option_value,'変更前のURL','変更後のURL');
UPDATE `wp_postmeta` SET meta_value=REPLACE (meta_value,'変更前のURL','変更後のURL');
UPDATE `wp_posts` SET post_title=REPLACE (post_title,'変更前のURL','変更後のURL');
実行結果:
参考にさせていただいたサイト
phpMyAdminを使ってWordPressを別のドメインで使えるようにする方法
Search Replace DBを使ってURLを一括置き換えする
SQL文を書いて、URLを置き換えは結構ハードルが高い、他にもプラグインを使っていて想定外のトラブルが起きるかもと心配な場合は一括置き換えできるツールを使う方が安心かもしれません。
URLの置換に便利なPHPスクリプト
Search Replace DBはPHPのシリアル化された文字列またはオブジェクトを壊すことなく、データベースの検索置換を実行できます。
上記のサイトでも注意喚起されていますが、このスクリプトを本番サーバで使用する場合は注意が必要です。
チェック項目:
・このスクリプトがセキュリティリスクになる可能性があることを承諾します
・このスクリプトを公開されているWebサーバーに残してはならないことを理解しています
・私は開発者であり私がやっていること理解しています
というチェック項目にチェックを入れ、名前、メールアドレスを入力するとダウンロードURLが送られてきます。
ダウンロードしたスクリプトは、WordPressインストールディレクトリ直下に置きます。
http://WordPressインストールURL/Search-Replace-DB-master
アクセスすると以下のような画面に
1段目の
replaceの後に [現在の(変更したい)URL、ドメイン]
with [変更後のURL、ドメイン]
を入力します。
正規表現を使う場合は、use regexにチェックを入れます。
dry run でお試し実行
まずは本番前に変更されるデータを確認するために[ dry run ]をクリック
live run で本番実行
live runをクリックすると実際のSQLが検索置換されます。
処理が終わると実行結果が表示されます。
今回データが置換されたのは、
wp_options
wp_posts
のテーブルでした。view changesをクリックすると実際に置換されたデータを確認することができます。
SQL文を書いたりやphpMyAdminの操作に慣れていなかったりする場合は、Search Replace DBは使いやすいですね。