クモのようにコツコツと

フロントエンドエンジニア イイダリョウのブログ。略称「クモコツ」

【WordPress】All-in-One WP Migration(全移行)とDeMomentSomTres Export(一部移行)の違い

WordPressのデータ移行。以前はダッシュボードで完結しない複雑な作業でした。最近は良いプラグインのおかげでダッシュボードだけで移行がしやすくなりました!コンテンツの全移行は「All-in-One WP Migration」、一部移行は「DeMomentSomTres Export」がおすすめです。それぞれに適した利用シーンがあるため、挙動の違いを比較しました!

【目次】

コンテンツの全移行と一部移行

WordPressのデータ移行はコンテンツを全移行したいときと一部移行したい時があります。

f:id:idr_zz:20190309203740j:plain

【コンテンツ全移行】

  • ローカルサーバで作っていた新規サイトのコンテンツを本番サーバにアップしたい
  • サーバ引っ越しのため、旧サーバのコンテンツを新サーバに移行したい
  • サイト不具合のため、バックアップにある過去状態に戻したい

【コンテンツ一部移行】

  • リニューアル版作成時に現行サイトで更新した記事を新サイトに反映したい
  • ボリュームが増えすぎたカテゴリだけを別サイトとして独立させたい
  • これまで独立していた複数のサイトの投稿を一つのサイトに統合したい

移行後サイトと移行前サイトの比較

今回、「全移行」と「一部移行」を検証するためにLocal by flywheelでローカル環境に「移行前サイト」「移行後サイト」を作りました。

プレビュー画面

「移行後サイト」のプレビュー画面 f:id:idr_zz:20190309195921j:plain WordPressのデフォルトテーマ「Twenty Nineteen」です。*1

「移行前サイト」のプレビュー画面 f:id:idr_zz:20190309195916j:plain 「Twenty Nineteen」のヘッダーに色をつけました。また、デフォルトで入っていた「Hello world」の投稿はゴミ箱に入れて「移行前の記事1〜3」の3件の投稿を加えました。

一般設定

「移行後サイト」の一般設定 f:id:idr_zz:20190309195953j:plain サイト名とリード文が「移行後」、URLが「ikougo」

「移行前サイト」の一般設定 f:id:idr_zz:20190309195947j:plain サイト名とリード文が「移行前」、URLが「ikoumae」

投稿画面

「移行後サイト」の投稿画面 f:id:idr_zz:20190309195933j:plain デフォルトの「Hello world」だけがあります。

「移行前サイト」の投稿画面 f:id:idr_zz:20190309195927j:plain 「移行前の記事1〜3」だけがあります。「Hello world」はゴミ箱に入れました。

この「移行前サイト」のコンテンツを「移行後サイト」に移行していきます。

「All-in-One WP Migration」によるコンテンツの全移行

これまでのコンテンツ全移行の手順

コンテンツの全移行、「All-in-One WP Migration」を知るまでこんな手順でした。

  • 移行前サーバのWordPressファイル一式をFTPソフトでダウンロード
  • ファイル一式のディレクトリ直下にあるwp-config.php内のDB情報を書き換える
  • 移行前サーバのPhpMyAdminでDBのsqlファイルをエクスポート
  • 移行後サーバにWordPressファイル一式をFTPソフトでアップロード
  • 移行後サーバのPhpMyAdminでDBのsqlファイルをインポート
  • Search Replace DBでDB内のURLを新しいURLに置換する

あちこち開いていじるため作業が複雑だし、DBやURLに影響するのでなかなか緊張する作業でした。

All-in-One WP Migrationで移行前サイトの全コンテンツをエクスポート

「All-in-One WP Migration」はコンテンツの全移行がダッシュボード作業で(ほぼ)完結するプラグインです!*2

※参考:たった3ステップでサイトの引っ越しが完了するプラグイン「All-in-One WP Migration」が簡単すぎ! | 株式会社ベクトル | 名古屋でWordPressを活用したウェブ制作・システム開発

それではさっそく使っていきましょう!「All-in-One WP Migration」を「移行前サイト」「移行後サイト」両方にインストールしてください。

「移行前」サイトで「All-in-One WP Migration」の「エクスポート」を開きます。
f:id:idr_zz:20190309200539j:plain
「エクスポート先」は「ファイル」を選択。

モーダルが立ち上がるので「xxxxをダウンロード」というボタンをクリック。 f:id:idr_zz:20190309200544j:plain 「.wpress」という拡張子のファイルがダウンロードされます。ここに投稿、メディア、環境設定、プラグインなどが一式になっています。

All-in-One WP Migrationで移行後サイトに全コンテンツをインポート

次は「移行後サイト」の作業です。「All-in-One WP Migration」の「インポート」を開きます。 f:id:idr_zz:20190309200558j:plain 「インポート元」で先ほどの「.wpress」ファイルを選択(画面にドラッグでもOKです)。

「今のサイトの内容が上書きされますバックアップしてくさい」といった注意がでます。 f:id:idr_zz:20190309200605j:plain 「開始」をクリック。

インポート完了のモーダルが開きます。 f:id:idr_zz:20190309200612j:plain 「閉じる」をクリック。

「All-in-One WP Migration」のファイルサイズ制限

なお、「All-in-One WP Migration」はインポート可能なサイズに制限があり、以前は「512MB」まででしたが今はさらに下がってしまっています。

こちらに対処方法がいくつか解説されています。

※参考:All-in-One WP Migrationのインポート可能ファイルサイズが512MBから30MB等へ減少した件について | ウェブマガジン カミナリ | 鳥取県米子市のホームページ制作・広告代理店・デザイン

私の方では古いバージョンを使うこと方法はうまくいきました。

対処法3. 古いバージョン(6.77)を使う

この方法だとプラグインをバージョンアップできないのがネックですね。。

FTPでアップしたメディアを「Media From FTP」でダッシュボードに表示する

なお、512MBでインポートできたとしても投稿が多いサイトだとメディアファイルが足りない場合があります。その場合はエクスポート時にメディア以外をエクスポートしましょう。

そしてメディアファイルは別途FTPソフトを使ってダウンロード→アップロードします。(最初に「ダッシュボード作業で(ほぼ)完結」と書いたのはこのファイルサイズ制限問題のためでした)

ただし、FTPソフトでのアップにはまた別の問題が…。DBを経由しない方法のためダッシュボードの「メディア」のファイル一覧に表示されないのです!

ご安心してください。素敵なプラグインがあります。「Media From FTP」というプラグインを使うとメディアファイルが検索されて「メディア」に登録されます。素晴らしい!!

※参考:FTP等でアップロードしたファイルをメディアライブラリに登録できる:Media from FTP | WordPress活用術

ちなみに私の環境では検索が途中で止まる現象があったのですが、開発者のKawamoriさんからTwitterで助言をいただき、うまくいきました。感謝!

移行後サイトが移行前サイトのコンテンツに上書きされる

さて、コンテンツの全移行をしたことで「移行後サイト」はどうなったか見ていきましょう。

まずプレビューの画面。 f:id:idr_zz:20190310015324j:plain サイト名もリード文も「移行前」に変わっています。ヘッダーの色も「移行前」と同じグレーに変わっています。 投稿も「Hellow world」がなく、「移行前の記事1〜3」が表示されています。

一般設定の画面。 f:id:idr_zz:20190309195940j:plain 見ての通りサイト名とリード文が「移行前」に変わっています。でもURLは「ikougo」のままですね。

投稿の画面。先ほどの「移行前サイト」とまったく同じですね。 f:id:idr_zz:20190310015340j:plain 「移行前の記事1〜3」が追加され、「Hellow world」はゴミ箱に行っています。

All-in-One WP Migrationで全移行するとURL以外は「移行前サイト」とまったく同じ内容に上書きされるわけです。

移行後サイトのサイト名を修正

このままだと「移行前サイト」と「移行後サイト」の違いがわかりにくいため、少し修正します。

「一般設定」画面を開き… f:id:idr_zz:20190310015603j:plain サイト名とリード文を「移行後」に打ち変える。

プレビュー画面。 f:id:idr_zz:20190309200343j:plain サイト名とリード文が「移行後」になりました!

「移行前サイト」と「移行後サイト」に記事を追加してから全移行

ここでもう一つ実験です。まず「移行前サイト」「移行後サイト」にそれぞれ記事を追加します。

「移行前サイト」と「移行後サイト」に「記事4」を追加する

「移行前サイト」に「移行前の記事4」を投稿します。 f:id:idr_zz:20190309200442j:plain

プレビュー画面。「移行前の記事4」が追加されました。 f:id:idr_zz:20190309200356j:plain

次に「移行後サイト」に「移行後の記事4」を投稿。 f:id:idr_zz:20190309200430j:plain

プレビュー画面。「移行後の記事4」が追加されました。 f:id:idr_zz:20190309200412j:plain さあ準備ができました。

ここからやりたいことがあります。「移行前サイト」の「移行前の記事4」を「移行後サイト」に移行したいです。つまり2つのサイトの統合です。

All-in-One WP Migrationでコンテンツを全移行

まずは「All-in-One WP Migration」で「移行前サイト」から「移行後サイト」に全以降するとどうなるか。手順は先ほどと全く同じです。

すると、なんということでしょう。 f:id:idr_zz:20190309200452j:plain 「移行前の記事4」が追加されたのはいいのですが「移行後の記事4」がなくなってしまったではありませんか!

サイト名、リード文もまた「移行前」に戻ってしまいました。

投稿画面です。 f:id:idr_zz:20190309200522j:plain やはり「移行後の記事4」がなくなっています。最初の全移行の時に「Hellow world」がゴミ箱に行ったときに半ば予想はできましたが、淡い期待がここで断ち切られましたw

一般設定画面。サイト名とリード文が「移行前」に戻っています。 f:id:idr_zz:20190309195940j:plain URLは先ほどと同じく「ikougo」のままですね。

先ほどと同じくサイト名とリード文を「移行後」に戻しました。 f:id:idr_zz:20190310015603j:plain 全移行をするたびにここも上書きされて先祖返りしてしまうのは手間ですね。。

All-in-One WP Migrationは移行前のコンテンツに「上書き」されるため、「移行前サイト」と「移行後サイト」の統合はできないことがはっきりました。

2つのサイトを統合するためには「全移行」ではなく「一部移行」をする必要があります。

「移行前サイト」と「移行後サイト」に「記事5」を追加する

次の実験に向け、「移行前サイト」と「移行後サイト」に再び記事を追加します。「記事5」です。

「移行前サイト」に「移行前の記事5」を投稿します。 f:id:idr_zz:20190309200622j:plain

プレビュー画面。「移行前の記事5」が追加されました。 f:id:idr_zz:20190309200617j:plain

次に「移行後サイト」に「移行後の記事5」を投稿。 f:id:idr_zz:20190309200527j:plain

プレビュー画面。「移行後の記事5」が追加されました。 f:id:idr_zz:20190309200532j:plain

さあ準備ができました。それでは今度は「全移行」ではなく「一部移行」を試してみましょう!

「DeMomentSomTres Export」によるコンテンツの一部移行

これまでの一部移行の手順

コンテンツの一部移行、「DeMomentSomTres Export」を知るまではこんな手順をしていました。

  • 移行前サイトのダッシュボードの標準エクスポートで一部のコンテンツを指定してxmlファイルをエクスポート
  • 移行後サイトのダッシュボードの標準インポートでxmlファイルをインポート
  • アイキャッチなどインポートに反映されない画像はFTPソフトでアップロード
  • 記事内の画像パスは移行サイト前のドメインのため、Search RegexでURLを検索置換

全移行に比べるとDB作業が減るので少し楽ですが、標準のエクスポート機能は下記の問題があります。

  • アイキャッチ画像が含まれない
  • imgタグのURLが書き換わらず移行前サイトのまま

DeMomentSomTres Exportで移行前サイトの一部のコンテンツをエクスポート

「DeMomentSomTres Export」はコンテンツの一部の移行がダッシュボード作業で完結するプラグインです!

※参考:WordPressで特定の記事と画像を簡単に別ブログへ移転する方法

コンテンツの一部移行はいくつかの方法があります。よく使うのは日付指定ですが、今回は投稿日が全部同じため、カテゴリで指定したく思います。

「移行前サイト」の「移行前の投稿5」のカテゴリを変更しました。 f:id:idr_zz:20190309200638j:plain カテゴリ名は「移行したい投稿」にしました。

「ツール」の「DeMomentSomTres Export」を開きます。 f:id:idr_zz:20190309200643j:plain

デフォルトは「すべてのコンテンツ」ですが投稿だけをエクスポートしたいので「投稿」を選択。 f:id:idr_zz:20190309200649j:plain

投稿の詳細項目が開きます。「カテゴリ」からカテゴリ「移行したい投稿」を選択。 f:id:idr_zz:20190309200656j:plain

「エクスポートファイルをダウンロード」をクリック。 f:id:idr_zz:20190309200701j:plain 「.xml」ファイルがダウンロードされます。このファイル自体にはメディアファイルは含まれませんがメディアファイルのパスの情報などが記載されています。

DeMomentSomTres Exportで移行後サイトに一部のコンテンツをインスポート

次は「移行後サイト」でのインポート作業です。移行後サイトの方はDeMomentSomTres Exportは不要でした。

「ツール」の「インポート」を選択します。 f:id:idr_zz:20190309200720j:plain

「WordPress」をクリック。(初期はインポーターのインストールが必要です) f:id:idr_zz:20190309200726j:plain

「WordPressのインポート」の「ファイルを選択」で先ほどエクスポートしたxmlファイルを選択。 f:id:idr_zz:20190309200732j:plain 「ファイルをアップロードしてインポート」をクリック。

「添付ファイルをダウンロードしてインポート」にチェック。この作業は移行前のメディアを移行後サイトにアップする工程のため忘れずに! f:id:idr_zz:20190309200738j:plain 「実行」をクリック

成功すると「すべて完了しました」という表示になります! f:id:idr_zz:20190309200743j:plain

「メディア のインポートに失敗しました」となる場合

さて、私の環境ではインポートがうまくいきませんでした。一部の画像が「メディア のインポートに失敗しました」となってしまいました。

調べるとプラグインの干渉が原因になることが多いらしく特に「EWWW Image Optimizer」というプラグインとは相性が悪いようです。

※参考:【DeMomentSomTres Export】ブログの記事をスムーズに移行(引越し)する方法【エラー対処】 | ルネッサンス・オブ・サイエンス

しかし今回はそのプラグインを使っていないですし、全プラグインを停止してもインポート失敗しました。

もう一つ、標準インポートツールのファイルサイズ制限が原因という情報も。こちらは「All-in-One WP Migration」とは逆でサイズが小さすぎのが問題のようでした。

※参考:Wordpressで”一部の”「メディアのインポートに失敗しました」の対処法 – 時にはWEBの話っ!

対処法は下記の部分のコメントアウト。私の環境ではこちらの方法でうまくいきました。

「Wordpressインポート」プラグインの「wordpress-importer.php」をエディタで開き、1016行目付近の以下のコードをコメントアウトします。

プラグインのカスタマイズはバージョンアップで上書きされてしまうため、あまりしたくないんですけどね…。

移行後サイトが移行前サイトのコンテンツと統合できた!

さて、コンテンツを一部移行をしたことで「移行後サイト」はどうなったか見ていきましょう。

まずプレビュー画面。 f:id:idr_zz:20190309200750j:plain おお!「移行前の記事5」が追加されていますが、その下に「移行後の記事5」もちゃんと残っています!全移行では先祖返りしていたサイト名とリード文も「移行後」のまま保持されています。

投稿画面です。 f:id:idr_zz:20190309200756j:plain 見ての通り「移行前の記事5」と「移行後の記事5」が両方入っています。

ようやく、2つのサイトのコンテンツの統合を実現することができたわけです!

最後に

まとめます。

【All-in-One WP Migrationの特徴】

  • コンテンツの「全移行」に使う
  • 全移行すると移行後のサイトのコンテンツがすべて上書きされてしまう
  • ファイルサイズの制限があるためメディアは除外した方がいい場合がある

【DeMomentSomTres Exportの特徴】

  • コンテンツの「一部移行」に使う
  • 移行前のコンテンツと移行後のコンテンツを統合することができる。
  • メディアのインポートが失敗する場合がある

一部移行のプラグインは前々から探していたのですが、うまい調べ方ができず、最近ようやく知りました。今回の実験で挙動の違いもはっきりわかりました。

今後は利用シーンに合わせて全移行と一部移行を使い分けていきたく思います。それではまた!

*1:Twenty Eighteenがなかったのでもう作られないのかな?と思ってました

*2:「ほぼ」と書いた理由は後述します