WordPressサイトの移転には、エクスポート・インポート機能を使う事ができます。しかしこの機能で対応できるのは記事とメディアのみです。WordPress設定や「リンク」、プラグインの設定などは移行する事ができないので、移転元のサイトを見ながら一つずつ設定しなくてはならず、サイトによっては大きな労力になり、また移行に漏れが生じる恐れがあります。

そこで、WordPressのエクスポート・インポート機能に頼らず、記事から設定までまるごと移行する方法を試してみました。

マルチサイトについて

以下の方法はWordPressのマルチサイトにも対応していますが、このような条件で行っています。

  • マルチサイトはサブディレクトリ方式です。
  • 移転元も移転先も同じサブディレクトリ名で移行します。

必要なもの

移転作業で必要な物をまとめてみました。

  • 移転元サイト(当たり前ですが)
  • 移転先になるサーバとデータベース(これも当たり前ですね)
  • phpMyAdmin(データの移行に使用するので、移転元、移転先ともに使える必要があります)
  • Search Replace DB(これは後でダウンロードします)
  • 時間的な余裕(ファイルのダウンロードとアップロードに、結構な時間を要するかもしれません)

1. 移転元サイトへのアクセスを遮断

移転元サイトの.htaccessファイルに設定を追加して、自分のIPアドレス以外からのアクセスを遮断します。

2. 移転元サイトのプラグインを全て停止、テーマを標準の物にする

スクリーンショット 2014-02-20 10.17.33

移転元サイトのプラグインを全て停止にします。
停止にする際に、どのプラグインが有効化されていたかを控えておきましょう。

スクリーンショット 2014-02-20 10.19.15

移転元サイトのテーマは、「Twenty Fourteen」などWordPress標準のテーマに変更しておきます。

3. phpMyAdminで移転元サイトのデータをエクスポート

移転元のphpMyAdminにアクセスし、データをエクスポートします。

スクリーンショット 2014-02-20 14.16.21

まず、左カラムのデータベースリストの、移転元サイトのデータベース名をクリックします。

スクリーンショット 2014-02-20 14.18.14

エクスポートタブをクリックし、エクスポート方法詳細をクリックします。

スクリーンショット 2014-02-20 10.33.30

テーブル全選択します。

スクリーンショット 2014-02-20 10.33.51

生成オプションCREATE DATABASE / USE コマンドを追加するにチェックを入れます。

スクリーンショット 2014-02-20 10.45.21

一番下の実行ボタンをクリックし、エクスポートファイルをダウンロードします。

 4. 移転元サイトのファイルをダウンロードする

スクリーンショット 2014-02-20 10.56.49

移転元サイトのサーバ上のファイルを、全てダウンロードして、一つのフォルダに保存しておきます。
※Macをお使いの場合、.htaccessファイルはMac上で不可視ファイルになってしまうので、あらかじめファイル名先頭のドットを消去したコピーファイルを用意しておくなどしておきましょう。

これで、移転元サイト側の作業は完了です。

 5. phpMyAdminで移転先サイトにデータをインポート

ここからは移転先サイト側の作業になります。

まず、移転先のphpMyAdminを開き、先ほどエクスポートしたデータファイルをインポートします。

スクリーンショット 2014-02-20 13.30.29

インポートの際にデータベースが作成されるので、予めデータベースを作成しておく必要はありません。

スクリーンショット 2014-02-20 13.34.16

まず、インポートタブをクリックし、インポートするファイルからエクスポートデータのアップロード方法を選びます。
ブラウザからアップロードする場合は、ファイルを選択からPC上にあるエクスポートデータを選択します。

スクリーンショット 2014-02-06 13.43.08

一番下の実行ボタンをクリックし、データをインポートします。

6. 移転先サーバにファイルをアップロードする

upload

4. 移転元サイトのファイルをダウンロードするでダウンロードしたファイルを、移転先サーバのWordPressを設置するディレクトリにアップロードします。

7. .htaccessファイルを書き換える

移転先のURLに合わせて、.htaccessファイルを書き換えます。

RewriteBaseのところと、RewirteRuleの最後の行を書き換えます。

RewriteBaseは、移転後のホームURLの、ドメイン以降の部分にします。

例えば、http://new-site.com/shop/が移転後のホームURLになる場合、

となります。

ドメイン直下がホームになる場合は、

となります。

RewriteRuleの最後の行は、RewiteBaseにindex.phpを加えたものになります。
http://new-site.com/shop/の場合は、

のようになります。

マルチサイトの場合は、メインサイトのホームURLを基準にします。

8. wp-config.phpを書き換える

移転先のwp-config.phpファイルを書き換えます。

ユーザー名、パスワード、ホスト名を、移転先環境に合わせて書き換えます。

saltも新しい物を生成して書き換えます。

マルチサイトの場合は、マルチサイト設定の部分も書き換えます。

$basePATH_CURRENT_SITEには、ホームURLのドメイン以降の部分を記述します。
DOMAIN_CURRENT_SITEには、ドメインのhttp://以降の部分を記述します。

9. データベースのサイトURLを書き換える

移転先のデータベースにインポートしたデータに含まれるURLを、旧URLから新URLに書き換えます。

データは通常の文字列データ以外にも、シリアライズされたデータを含んでいるため、単純な文字列置換では対応できません。

そこで、Search Replace DBというPHPスクリプトを使用します。

Search Replace DBをサーバに設置する

まず、Search Replace DBのサイトにアクセスします。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

スクリーンショット 2014-02-21 14.49.44

バージョン3.0.0 BETAは、環境によって文字化けが発生したので、今回はバージョン2.1.0をダウンロードします。

rename

ダウンロードしたzipファイルを解凍すると、searchreplacedb2.phpというファイルが展開されます。
セキュリティのために、このファイル名をランダムなものにリネームします。(拡張子は残します。)

スクリーンショット 2014-02-21 16.33.31

リネームしたファイルを、サーバのWordPressサイトのルートディレクトリにアップロードします。

データベース内のURLを置換する

スクリーンショット 2014-02-21 18.21.59

ブラウザで、移転先サイトのURL + 先ほど設置したPHPファイル名へアクセスします。

スクリーンショット 2014-02-21 18.26.58

submitをクリックします。

スクリーンショット 2014-02-21 18.29.03

各項目は自動的に埋まっているので、正しいかを確認してSubmit DB detailsをクリック。

スクリーンショット 2014-02-21 18.34.16

Tablesで全てのテーブルを選択し、Continueをクリックします。
確認ダイアログが表示されるので、OKをクリックして続けます。

スクリーンショット 2014-02-21 18.39.41

Search forには、移転元サイトのホームURLを入力します。
Replace withには、移転先サイトのホームURLを入力します。
どちらも、末尾のスラッシュは入れません。

正しく入力したか、もう一度確認して、Submit Search stringをクリックします。
確認ダイアログが表示されるので、OKをクリックして続けます。

スクリーンショット 2014-02-21 18.47.08

置換が完了です。

先ほど設置したPHPファイルはもう必要ありません。セキュリティ上のリスクが大きいので、すぐに削除しておきましょう。

10. データベースのドメインとパスを書き換える(マルチサイトのみ)

マルチサイトの場合、さらにドメインとパスの書き換えが必要です。
こちらはphpMyAdminで行います。

まず、phpMyAdminで移転先サイトのwp_siteテーブルを開きます。

スクリーンショット 2014-02-21 19.02.25

こちらはメインサイトのドメイン・パスになります。
編集ボタンをクリックし、ドメインとパスを書き換えます。
ドメインはhttp://以降、パスはスラッシュで始まりスラッシュで終わります。

スクリーンショット 2014-02-21 19.06.15

以上のように書き換えます。

次に、wp_blogsテーブルを開きます。

スクリーンショット 2014-02-21 19.23.58

こちらはメインサイトとサブサイト全ての情報です。
先ほどと同様に、ドメインとパスを全て書き換えます。

スクリーンショット 2014-02-21 19.27.05

このように書き換えたら完了です。

11. プラグインとテーマを元に戻して完了!

ここまででほぼ完了です。
移転先サイトのログインURLにアクセスしてみてください。
アクセスして無事にログインできれば、あとはダッシュボードからテーマファイルを元のものに戻し、必要なプラグインを有効化しましょう。

あとはホームページを開き、サイト内を一巡して問題なければ完了です。
お疲れさまでした〜

成功のあかつきにはバックアップもね!

ここから新天地でのサイト運営が始まります。
バックアップを忘れずに取っておきましょう。