IT女子のお気に入りフォルダ

管理人の備忘録と実践を兼ねた(出来るだけ)役に立つ情報を配信するブログです。

WordPressでサーバー移行時にデータベース内のドメインを簡単に書き換える方法

WordPressでサーバー移行をするとき(例えば、サーバーの引っ越しだったり、開発環境から本番環境への移行だったりその逆だったり)データベース内のドメインを新しい環境のドメインに書き換える必要があります。


データベース内のドメインの書き換えなんて、SQL文を発行して一括変換すればいいじゃんとなりそうなものですが、wp_optionsとかwp_postmetaにはシリアライズされたデータが入っていることもあるので、単純に置換するだけではまずいそうです。
(シリアライズされたデータには、ドメインの文字列の長さなども含まれている様子)
参考:WordPress のDB上のサイトURLを一気に変換

というわけで、SQL文を発行して一括変換するのではなく、別の方法でデータベース内のドメインを書き換える方法を調べたのでその手順メモです。

以下の作業は完了している前提で、その後の流れです。
・移行元のデータベースをエクスポートして移行先へのインポートが完了している。
・wp-config.phpのデータベース情報の書き換えが完了している。

手順1. スクリプトファイルをダウンロード

WordPress Serialized PHP Search Replace Tool
にアクセスしてスクリプトファイルをダウンロードします。
DOWNLOAD SEARCH REPLACE DB V 2.1.0からダウンロード可能です。(注:記事投稿現在)

手順2. ダウンロードしたファイルを解凍して新環境へアップロードする

ダウンロードしたファイルを解凍します。
解凍するとsearchreplacedb2.phpとなるので、このファイルを移行先サーバーのWordPressインストールディレクトリに配置します。
例)ルート直下にwpフォルダを作ってWordPressをインストールしている場合は、そのwpフォルダ直下です。

手順3. アップロードしたファイルにアクセスします

先ほど新環境へアップロードしたファイルにアクセスします。
例)ルート直下にwpフォルダを作ってWordPressをインストールしている場合
http://www.example.com/wp/searchreplacedb2.php
アクセスすると以下のような画面が表示されるので「Submit」ボタンを押します。
01Search and replace DB-1

手順4. データベース情報を確認する

wp-config.phpに記述されているデータベース情報が出てくるので、間違いなければ「Submit DB details」ボタンで次にすすみます。
02Search and replace DB

手順5. 対象テーブルを選ぶ

ドメインの書き換えを行いたいテーブルを選択します。全部選択で良いと思います。
選択したら「Continue」ボタンを押します。
03Search and replace DB

手順6. ドメイン情報を入力する

書き換えたいドメインの情報を入力します。
Search for (case sensitive string)・・・旧ドメイン
Replace with・・・新ドメイン
「Submit Search string」ボタンを押します。
例)
旧ドメイン:http://example.localhost
新ドメイン:http://www.example.com
04Search and replace DB

手順7. 完了

正常に書き換えが終わると以下のようなCompleted画面が表示されます。
05Search and replace DB.

手順8. スクリプトファイルを削除する

手順2でアップロードしたsearchreplacedb2.phpファイルを削除します。

以上。
コマンド入力など一切不要なので誰でも出来て簡単ですね!

2013.08.23 追記
今回ご紹介したのは、データベース内のドメイン置換です。一部のプラグインではURLをデータベースに持たないものがあります。そういうプラグインは別途対応が必要なので要注意です。