[WordPress] WordPresURL(ドメイン)を一括変更する。phpMyAdmin、Search Replace DB

レンタルサーバ上の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ユーザーの情報

WordPress Codex データベース構造

URLなどの情報が含まれているテーブルは

  • wp_options
  • wp_postmeta
  • wp_posts

です。(利用してるプラグインによってその他のテーブルもある場合あり)

基本的に上記の3テーブルを対象にデータの検索置換を行います。

データベースを開いた状態で、SQLタブをクリック

phpmyadmin 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のシリアル化された文字列またはオブジェクトを壊すことなく、データベースの検索置換を実行できます。

Search Replace DB

上記のサイトでも注意喚起されていますが、このスクリプトを本番サーバで使用する場合は注意が必要です。

チェック項目:
・このスクリプトがセキュリティリスクになる可能性があることを承諾します
・このスクリプトを公開されているWebサーバーに残してはならないことを理解しています
・私は開発者であり私がやっていること理解しています

というチェック項目にチェックを入れ、名前、メールアドレスを入力するとダウンロードURLが送られてきます。

ダウンロードしたスクリプトは、WordPressインストールディレクトリ直下に置きます。

http://WordPressインストールURL/Search-Replace-DB-master

アクセスすると以下のような画面に

1段目の

replaceの後に [現在の(変更したい)URL、ドメイン]

width [変更後のURL、ドメイン]

を入力します。

正規表現を使う場合は、use regexにチェックを入れます。

dry run でお試し実行

まずは本番前に変更されるデータを確認するために[ dry run ]をクリック

live run で本番実行

live runをクリックすると実際のSQLが検索置換されます。

確認ダイアログが表示されるので問題なければOKをクリック

処理が終わると実行結果が表示されます。

今回データが置換されたのは、

wp_options
wp_posts

のテーブルでした。view changesをクリックすると実際に置換されたデータを確認することができます。

SQL文を書いたりやphpMyAdminの操作に慣れていなかったりする場合は、Search Replace DBは使いやすいですね。