例えば、雑記ブログから、人気のあるカテゴリーに特化させたいなどという場合のWordPressでのコンテンツ移行どうしてますか?

移行先のサイトが真っ新(これから作る)であれば、一番手っ取り早いのが、サイトを丸ごとコピーして、コピー先、コピー元で重複しないように不要なコンテンツ(投稿や固定ページ)を削除することです。

でも、もうすでに双方にある程度のコンテンツがある場合は...ちょっと難しい部分があります。

それは、一部の必要なコンテンツだけを単純にエクスポート/インポートすると、本文に含まれる画像やファイルが移行先サイトへコピーされないことです。

というのも、基本的にWordPressでは、エクスポート時に「すべてのコンテンツ」を選択した場合のみ、画像の移行が正常に処理される仕組みになっていますから、以下の場合などでは、画像が正常に移行されないのです。

今回は、サイト内の一部の投稿(カテゴリーなどで絞り込んでエクスポートした投稿など)を画像やファイルを含めて別の際へ移行する方法を紹介します。

なお、このページの内容は、あくまでも私が行って成功した例であり、サイトの環境により、また以下の条件のものは正常に移行できないことがありますのであしからず。

  • 通常の画像挿入方法以外で挿入された画像(プラグインを使ったギャラリーなど)
  • エクスポート元やインポート先サイトでアップロードした画像に何かのアクション(圧縮など)を加えるプラグインが有効になっているとき

それでは進めていきましょう!

【前準備】移行したコンテンツを見分けられるようにしておく

これは実際に一部投稿の移行をしてみた後で「こうしとけばよかった」と感じた部分です。

別のサイトから一部の投稿を移行する場合、インポート時に現在の管理者やいつもの投稿者を作者としてインポートしてしまうと、インポートしたものなのか、もともとサイトにあったものなのかが分からなくなってしまいます。

冒頭でも説明した通り、特に画像の移行に失敗するというケースが一部コンテンツの移行では発生しがちなので、確認のためにも、手修正をするためにも、インポートする投稿を紐づけるユーザーは分けておきましょう。

作者を分けておくことで、失敗時に作者で絞り込んでインポートした投稿を一括削除することもできます

投稿者は、クイック編集や通常の編集で後から変更ができます

投稿の一部などを移行する具体的な手順

1.移行元サイトの準備とエクスポート

冒頭で触れた通り、WordPress標準のエクスポーター(「ツール」→「エクスポート」)の仕様では、すべてのコンテンツをエクスポートしない場合、本文内に含まれている画像やファイルは原則移行されません。

これを部分的にエクスポートした場合でも画像やファイルを含めることができるよう、移行元サイトに1つ、以下のプラグインを追加します。

他にもメディアを含めてエクスポートできるプラグインがいろいろあるようですが、私の場合は上記のプラグインでうまくいきました。

「Export media with selected content」プラグイン有効化後、管理画面から、「ツール」→「エクスポート」を開きます。

例えばカテゴリーで絞り込むなど移行させるコンテンツの条件を指定したら、必ず下図のチェックを入れてエクスポートします。

サイトにある一部の投稿や固定ページを画像を含めて他のサイトへ移行する方法|Twenty Twenty-Two (TT2)のカスタマイズ情報

上図の「エクスポートファイルをダウンロード」をクリックして、パソコン上にファイルを保存します(移行用のデータが入った.xml形式のファイルを1つダウンロードする形になります)

これで、移行させるコンテンツのエクスポートは終了です。

この先で紹介する3の確認作業が完了するまでは、移行元サイト(特に移行させるコンテンツ)の編集や修正等はしないでください

2.移行先サイトでコンテンツをインポートする

移行先サイトの管理画面から、「ツール」→「インポート」を開きます。

ずらっと表示される一覧の中から、「WordPress」の下の「インポーターを実行」をクリックします。

一度もインポート機能を使ったことがない場合は「WordPress」の下に「今すぐインストール」というリンクがあるのでクリックし、その後表示される「インポーターを実行」をクリックします。

下図のような画面になるので、「ファイルを選択」をクリックして、先ほど保存したxml形式のファイルを選びます。

サイトにある一部の投稿や固定ページを画像を含めて他のサイトへ移行する方法|Twenty Twenty-Two (TT2)のカスタマイズ情報

ファイルが適切に選択されると、上図の「ファイルをアップロードしてインポート」がクリックできる状態になりますので、クリックします。

すると下図のような画面になるので、必ず「添付ファイルをダウンロードしてインポートする」にチェックを入れます。

このとき、「あるいは投稿を既存のユーザーに割り当てる」で、前準備で用意したユーザーにしておくと、インポートしたコンテンツの作者がすべて用意したユーザーになり、インポートしたコンテンツかどうかの判別が簡単になります

サイトにある一部の投稿や固定ページを画像を含めて他のサイトへ移行する方法|Twenty Twenty-Two (TT2)のカスタマイズ情報

「実行」をクリックしてしばらく待って、完了画面に変わればインポート完了です。

3.正常に移行したかどうかの確認

終わった!と喜ぶ前に、きちんとコンテンツが移行されたかを必ず確認しておきましょう。

まずは移行先サイトの「メディア」を開いて、今までになかった画像やファイルが増えている(移行元サイトの画像やファイルがコピーされている)かを確認しましょう。

次に、移行してきた投稿などで画像の含まれるものを編集画面で開き、画像のURLが移行先サイトのURLになっているかを確認します。

通常の画像ブロックで追加した画像はきちんと移行されているはずですが、ギャラリーやプラグインを使って挿入した画像などは移行されませんから、手動で入れ替えるしかありません

いくつかのコンテンツ(投稿など)で確認できたら、移行完了です。

もしもうまくいかなかった場合は上記手順のうちのいずれかがの措置が抜けているか、環境的に移行が難しいかのいずれかですので、一度インポートしたコンテンツを削除して、最初からやり直してみてください。

移行先サイトのコンテンツ調整

ここまでで、ほぼ移行が完了しましたが、まだ以下のような確認すべき事項があります。

  • 本文内に挿入されたリンク(特に移行元サイト上での内部リンク)の修正
  • 移行元サイトで有効だったショートコードが移行先サイトでも機能しているか?
  • 移行元サイトで有効化して使っていた本文に何かを追加するプラグインが、移行先サイトでも稼働しているか?(きちんとコンテンツが表示されるか?)

内部リンクについては、以下のプラグインで発見して修正すると効率よく作業できます。

移行確認後の措置いろいろ

ここまでの作業で、コンテンツの移行はほぼ完了しました。

移行元、移行先へ追加したプラグインの停止と削除

ここまでの作業で、移行元サイトには「Export media with selected content」プラグインが有効になっていますが、移行完了後は不要ですので停止と削除をします。

また、移行先サイトでは「WordPress インポートツール」、リンクの検索に使用した「Search Regex」プラグイン(使用した場合のみ)が有効化されていますので、移行後は必要ありませんから停止・削除します。

移行元サイトの対象コンテンツの扱い

最後に、移行元サイトのコンテンツへの措置について補足しておきます。

ここまでで移行が問題なく完了していれば、移行元サイトのコンテンツ(投稿など)はもう必要ありません。

ここで措置として以下の2つの方法があります。

  • 移行元の対象コンテンツをゴミ箱に入れて削除する
  • 移行元サイトにリダイレクトプラグインを入れ、リダイレクトの措置を行った上で移行したコンテンツをゴミ箱に入れて削除する

前者は最も単純な方法、後者は、移行元ページへのアクセスを移行先ページへ遷移させるようにして(リダイレクトさせて)から削除する方法です。

リダイレクトの措置については、以下のプラグインを使うとよいでしょう。

個人的には、そのうち(こればかりは検索エンジンのタイミング次第)移行先のコンテンツがインデックスされ、逆に移行元のコンテンツがインデックスから削除されていきますので、特に毎日すごい数のアクセスがないコンテンツであれば、無理にリダイレクト設定する必要もないのかなと思います(実際私はリダイレクトの措置をしていません)。

【補足】カスタム投稿タイプで作成したコンテンツの移行方法

ここまでは、WordPressインストール時に存在する投稿や固定ページ(実はこれも投稿タイプの1つ)の移行方法を紹介してきました。

ここからは補足事項として、自身で追加した投稿タイプ(これをカスタム投稿タイプといいます)のコンテンツを移行する手法について紹介しておきます。

エクスポートできるかの確認と有効化

1つ目の確認事項は、エクスポートできるかどうかです。「ツール」→「エクスポート」を開いて、目的のカスタム投稿タイプが一覧上に表示されているかを確認します。

もしも表示されていない場合には、エクスポートが無効になっている可能性がありますので、以下で確認します。

いずれの場合でも、設定変更後、「ツール」→「エクスポート」で目的の投稿タイプが選択できるようになっていれば移行することができます。

テーマのfunctions.phpなどでregister_post_typeを使って追加している場合

この方法では、特に指定していない限りはエクスポートが可能になっているはずですが、どこかの情報を見て投稿タイプの追加をしている場合には、無効にしてしまっているかも知れません、

register_post_typeで投稿タイプを追加しているプログラムの「can_export」という行が「false」になっているはずですので「true」に修正するか、その行を削除またはコメントアウトします。

プラグインを使って投稿タイプを追加している場合

投稿タイプを簡単に管理できるプラグインとしてよく使われているCustom Post Type UIの最近(少なくともバージョン1.13.1 )のバージョンでは、デフォルトでエクスポートの設定が無効になっています。

目的の投稿タイプの編集画面を開き、「Can Export」項目を有効にしてください。

移行先サイトの設定

カスタム投稿タイプは自身で追加した投稿タイプですので、移行先サイトにも同じ投稿タイプがなければ移行されません(正確には移行されても見ることができません)。

移行先サイトへ、移行元サイトと同じ方法、設定で移行目的のカスタム投稿タイプを追加しておきましょう。

既に移行してしまって、管理画面上で移行したはずのコンテンツが見えない場合には、カスタム投稿タイプの設定を追加して、その投稿タイプの一覧が表示されるかで移行自体ができているかは確認できます

移行後、カスタム投稿タイプではなく、通常の投稿として表示・管理したい場合には以下のプラグインを使って投稿タイプの変更を行うとよいでしょう。

投稿タイプの変更が終わったら、カスタム投稿タイプの設定(PHPで追加またはプラグインで追加)の削除、上記投稿タイプ変更用プラグインの停止と削除を行えば終了です。