サーバーの移転などでWordPressをまるごと移転する機会はよくありますが、指定した記事を別WordPressに移行するケースは中々ありません。今回は、あるWordPressサイトにある指定記事を別WordPressに移すための方法をご紹介します!
なぜ指定した記事を別サイトに移行することになったのか?
このサイト(Miningoo)の指定した記事を別サイトに移行しました。
移行に至った経緯としては、このサイトは元々ブログとして始めたサイトであるため、いつの間にかカテゴリーが乱雑に増えてしまいました。その結果、このサイトのテーマがわかりにくくなってしまったので、2つに分けて運営しようと決意したからです。
Miningooはデータサイエンスを一番大きなテーマに掲げて、プログラミングや機械学習などテックよりのメディアにしていこうと考えています。もう一つは自分の個人用ブログ(st2one.com)としてガジェットやビールなど自分の好きなものを発信していこうかと。
ということで、もともとMiningooで書いていた記事をst2one.comに移行することになりました。
WordPressのエクスポート・インポート機能を使って記事を移行する方法
WordPressの記事を移行する方法を調べてみたところ、元々備わっているエクスポート・インポート機能を使うのが一番良さそうだと判明しました。
ただし、画像の移行が厄介で未だに最適な方法が見つかっていません。(どなたか、最適をご存知な方がいらっしゃれば教えてください!)
具体的には以下の手順で移行しました。
- 画像を元サイトからダウンロードしておく
- 画像を移行先サイトにアップロードする
- 移行したい記事を元サイトでエクスポートする
- 画像のURLなど元サイトのドメインを移行先サイトのドメインに書き換えする
- エクスポートした記事を移行先サイトでインポートする
- サムネイル画像を手動で頑張って設定する(ここどなたかいい方法知ってませんか?)
- 元サイトでリダイレクトを設定する
ここからは、実際にMiningoo(https://miningoo.com)からst2one.com(http://st2one.com)に移行した方法を解説していきます。
環境や手順によってはうまくいかない場合がございます。必ずバックアップをとり、ご自身の責任をもって作業してください。
1. 画像を元サイトからダウンロードしておく
アップロードされたすべての画像は/wp-content/uploads
フォルダに保存されているので、zipファイルに圧縮してダウンロードしておく。
2. 画像を移行先サイトにアップロードする
失敗が怖いのでもともとのuploads
フォルダをバックアップしておく
そして、ダウロードしたuploads
フォルダを元サイトと同じ場所/wp-content/uploads
に配置されるようにアップロードする
フォルダのアクセス権限がもとのフォルダと同じになるように注意する
3. 移行したい記事を元サイトでエクスポートする
WordPressに元々備わっている機能で簡単にxml形式で記事をエクスポートすることができる
4. 画像のURLなど元サイトのドメインを移行先サイトのドメインに書き換えする
ダウンロードしたxml形式での記事には元サイトのURLが残っています
移行先のURLに書き換える必要がある
5. エクスポートした記事を移行先サイトでインポートする
URLを書き換えたxml形式の記事を移行先サイトでインポート
記事までは簡単に移行することができます
この時点ではインポートした記事を非公開にしておくのがおすすめ
最後に元サイトでリダイレクト設定が完了したら公開していきましょう
6. サムネイル画像を手動で頑張って設定する
記事の移行までは簡単に移行することができたのですが、いざサイトを見てみると
なんとサムネイル画像が白紙になってしまいました
いい方法を調べても見つけられなかったので、根気でサムネイル画像を設定し直しました。
時間がかかるのでもう本当にやりたくない作業です。
(どなたかいい方法をご存じの方教えていただけると幸いです。)
7. 元サイトでリダイレクトを設定する
2つのサイトで全く同じ記事が存在すると、Googleの評価が悪くなりSEOが下がってしまう。
元サイトで301リダイレクトを設定することで、Googleに記事を移行したことを知らせる必要がある。
MiningooではNginxというサーバーを使っており、Nginxで301を制御したいと考えていました
そこで見つけたのが、Redirection
というプラグインです
Redirection
を使うと簡単に301リダイレクトのNginx用の設定ファイルを作成することができます
ここで注意する点が一つあります。
WordPressで301リダイレクトを制御する場合は転送ルールを設定するだけなのですが、Nginx側で制御する場合はRedirection
が生成してくれる設定ファイルをnginx.conf
に追記してNginxを再起動する必要があります
まとめ
長くなってしまいましたがなんとか指定した記事を移行することができました。
ただサムネイル画像が移行できない件や、リダイレクトの設定を手動でしないといけない件など、まだまだ改善の余地が色々ありそうです。