WordPressのお引っ越し(データ移行)の方法を調べてまとめました。
今回試したのは、プラグインを使用して、かつ無料でお引っ越しできる方法です。
プラグインでうまく移行できない場合、最終的には手動でやることになると思います、、。
お引っ越しにおすすめなプラグイン「All-in-One WP Migration」
プラグインでお引っ越しをするならAll-in-One WP Migrationがおすすめです。
ボタンひとつでサイトの引っ越しが可能。UIも日本語で分かりやすいです。

引っ越し元のWordPressからエクスポートデータをダウンロードする
引っ越し元にAll-in-One WP Migrationをインストール&有効にしたら、管理画面のメニューに表示されるので、エクスポートを選択します。

エクスポート先を選択すれば、自動的にエクスポートが開始されます。今回はエクスポート先に「ファイル」を指定しました。
完了したら、以下のような画面が表されるので、クリックしてダウンロードします。拡張子がwpressのファイルがダンロードされていると思います。

引っ越し先のWordPressにデータをインポートする
引っ越し先にもAll-in-One WP Migrationをインストール&有効にし、管理画面のメニューからインポートを選択します。
先程ダウンロードしたファイルを、インポート元に指定します。すると次のような確認のダイアログが表示されます。

全てのデータが上書きされますが、問題なければ「開始」します。
テーマの設定やプラグインなど、ほぼすべてのデータが移行できました。変更したのはパーマリンクの設定だけです。これが一番簡単な引っ越し方法だと思います。
ファイルサイズが大きくてインポートできない場合
インポートできるサイズは「最大アップロードファイルサイズ」に準じます。
以下の場合だと128MBまでとなります。

「最大アップロードファイルサイズ」が128MBに対して、433MBのデータをインポートしようとすると、次のようなエラーが表示されます。

制限をなくすためには、有料プラグインを購入する必要がありますが、無料で移行できる方法もあります。
方法その1エクスポートするデータ量を減らす
データサイズを減らすには、エクスポートする内容を減らす必要があります。
All-in-One WP Migrationでは、どのデータをエクスポートしないか選択することができます。
一番効果があるのはメディアライブラリです。「高度なオプション」の中からエクスポートしないデータを選択します。

メディアライブラリは、投稿に使用した画像等が格納されています。エクスポートしない場合は、手動でFTPアップする必要があります。
メディアライブラリをエクスポートしない場合、当然ながら引っ越し先のサイトは、以下のように画像が表示されない状態になります。

その場合、画像を引っ越し先のサーバーにFTPアップする必要があります。
引っ越し元のuploadディレクトリの中身を、引っ越し先の同じ階層にアップします。

これで、画像が表示されると思います。
方法その2最大アップロードファイルのサイズを変更する
メディアファイルやテーマなど、削れそうなデータを除外しても大きなサイズになる場合「最大アップロードファイルサイズ」を増やす必要があります。

サイズを増やすには、PHPの設定を変更します。サーバーによって設定方法が異なるので、php.iniを変更する方法をメモしておきます。
具体的には、次の値を変更します。以下はアップロードできる容量が600MBになることを表します。
upload_max_filesize = 600M
ファイルを変更してもWordPressに反映されない時は、ApachまたはNginxなどのサーバソフトを再起動します。なお、サーバーにサイズ上限が設定されていると、そちらが優先になるようです。
それでもうまくいかない場合
以下方法を試してもうまくいかない、
方法1:エクスポートデータを減らす
方法2:WordPressの「最大アップロードファイル」サイズの変更
もしくはエクスポートファイルが、アップできる上限以上のサイズの場合、All-in-One WP Migrationの有料版を購入するか、別の方法でデータ移行します。
WordPress標準のプラグインでお引っ越しする
WordPress標準のプラグインでも引っ越しが可能です。手順はAll-in-One WP Migrationと大体同じです。
引っ越し元のWordPressからエクスポートデータをダウンロードする
管理画面のツール→エクスポートを選択します。エクスポートする内容は「すべてのコンテンツ」を選択、「エクスポートデータをダウンロード」をクリックします。
拡張子がxmlのファイルがダウンロードされると思います。

引っ越し先のWordPressにデータをインポートする
管理画面のツール→インポート→Wordpressの「今すぐインストール」をクリックします。

プラグインがインストールされたら、インポーターの実行をクリック。

先程ダウンロードしたxmlファイルを選択します。「ファイルをアップロードしてインポート」をクリックします。

投稿者の割り当てを設定します。最後に「添付ファイルをインポート」にチェックをしてして「実行」します。

移行データは、投稿、固定ページ、コメント、カスタムフィールド、カテゴリー、タグのみです。
それ以外の設定は移行されないので、手動で設定する必要があります。
例としてはブログ名、テーマ、プラグイン、ユーザー、パーマリンクなどです。
メディアのインポートに失敗した場合
これは余談ですが、ローカル環境で開発したデータを本番に移行したい。ってことがあると思います。
その場合、この方法だとメディアのインポートに失敗します。どうやら画像はURLを元にネット経由で取得しているようです。

画像は手動でFTPアップする必要があります。引っ越し元のuploadsディレクトリのデータを、引っ越し先と同じディレクトリにアップします。

これで画像が表示されると思いきや、All-in-One WP Migrationで移行した時と異なり、アイキャッチが「NO IMAGE」になっています。画像とデータが紐づいていない状態です。

画像については、メディアライブラリを別途移行する必要があります。
アイキャッチが表示されない!メディアライブラリのお引越しにおすすめなプラグイン「Moving Media Library」
お引っ越しでアイキャッチが表示されないのは、メディアライブラリのデータ移行に失敗した場合がほとんどです。
メディアライブラリの引っ越しにおすすめのプラグインはMoving Media Libraryです。

使い方は簡単で、引っ越し元にプラグインをインストールしたら、管理画面のメニューにMoving Media Libraryが表示されるので、エクスポートを選択します。
次のような画面になるので、「JSON形式でエクスポート」をクリック

表示されたJSONファイルの「ダウンロード」をクリックします。拡張子がjsonのファイルがダンロードされていると思います。

引っ越し先にも同じプラグインをダウンロードします。
先程のデータをインポートする前に、画像を手動でFTPアップします。引っ越し元のuploadsフォルダの内容をそのまま引っ越し先にアップします。

画像をFTPアップしたら管理画面に戻ります。
先ほどダウンロードしたファイルを選択して「JSONからインポート」をクリックします。

今回のお引っ越しの場合、上記のようなユーザーやコンテンツの設定をしなくても問題ありませんでした。環境によっては設定が必要かもしれません。
これでアイキャッチが表示されると思います
一部のアイキャッチの紐付けがうまくいかない場合
WordPress標準のプラグインで移行した場合ですが、メディアライブラリの移行をしても、一部のアイキャッチが「NO IMAGE」のままで、紐付けがうまくいかない時がありました。
その時は、WordPress標準のプラグインでエクスポートしたデータを、再度インポートしてみます。
そうするとうまく紐付けされました。
最終確認!投稿や固定ページに掲載したURLは「Search Regex」で置換する
これでお引っ越しが完了!と思いきや、記事や固定ページに掲載しているURLが引っ越し元そのままの場合があります。主に画像やブログ内リンクなどです。
将来的には引っ越し元のデータを削除することが殆どだと思うので、引っ越し先のURLに置換します。
作業としては、引っ越し元のURLを検索して、ヒットするなら都度、新しいURLに置換していきます。
URLの置換には、プラグインSearch Regexが便利です。

プラグインをインストールしたら、管理画面→ツール→Search Regexを選択します。
以下のように検索と置換のURLを入力します。正規表現も使えます

今回、画像だけの置換をしたいので、「src=」から始まる文字列を指定しています。
同一ドメインでのリンクを指定している場合は、「href=」から始まる文字列も置換します。
最後に引っ越し元のドメインを検索して、不要なデータがヒットしないか確認します。
これでお引っ越しが完了しました!
まとめ
WordPressのお引っ越しは、大規模サイトになるほど難易度が上がる気がします。
記事の多さももちろんですが、複雑なカスタマイズをしているサイトほど引っ越しがうまくいかない場合が多いです。
今回調べた引っ越し方法は王道ですが、他にもっと簡単な方法があるかもしれません。
とりあえず、今回はこれでうまく行ったのでメモしておきます!
コメント