データ引っ越し・統合時にアイキャッチ画像を引き継ぐ方法

   

過去いくつWordpressでサイトを作ってきたか分かりませんが、AとBのサイトを統合してしまいたいなという事がままあります。

基本的には記事にアイキャッチ画像を入れてあるため、それを引き継ぎたいのですが、デフォルトの機能でXMLをエクスポートしてから統合先(引っ越し先)でインポートをすると、アイキャッチ画像が引き継がれない。

何故かと言うと、このXMLには

<wp:postmeta>
<wp:meta_key>_thumbnail_id</wp:meta_key>
<wp:meta_value><![CDATA[369]]></wp:meta_value>
</wp:postmeta>

こんな感じで、メディアIDがpostmetaの_thumbnail_idに設定してあるだけだからです。

この辺は、ダウンロード時にすべてのデータを取ってくるようにすれば、メディアIDなんかも引っ張ってくれるようなのですが、全部を処理するには重すぎて無理です…とか、ゴミデータがあるからそれは引き継ぎたくないとか、色々な事情があってすべてのデータをインポートしたくないということがあると思います。

そこで、「投稿」だけ、とかの設定にしてエクスポートをするのですが、そうするとメディアライブラリのXMLがついてこないので、サムネイルIDは登録されるけれど、実際はアイキャッチ画像が取得できないということが発生します。

更に言うと、統合先に同じIDでメディアが登録されていると、統合先のメディアがアイキャッチ画像に設定されて、なんじゃこりゃ…という事になる訳です。つらい。

エクスポートは、WP CSV Exporter使いましょう

これだけでOKです。

カスタム投稿タイプを利用する場合は課金が必要ですが、投稿とページについては無料版で問題なく使えます。

投稿者・投稿日時・タグ・アイキャッチ画像なんかの付帯データにチェックを入れてダウンロードしてください。

するとCSVファイルが手に入ります

CSVファイルを加工しましょう

加工が必要なのフィールドは

  • post_thumbnail
  • post_author

の2つです。

画像ファイルは面倒なのでFTPでもなんでも良いので元のサーバから移転先(統合先)のサーバのuploadsフォルダ内に適当なフォルダを掘って突っ込んでおきましょう。

引っ越し元:wp-content/uploads/以下のファイルを

引越し先:wp-conotent/uploads/transferred/ 以下に引っ越ししておきます。

CSVファイルにある画像ファイルのURLを置換してください。恐らくこんな風にすれば良いと思います。transferredの文字列は任意です。フォルダを掘ってあるのは、仮に同じ名前のファイルがあったら上書きしてしまうからです。

  • 置換元:http://元のドメイン/wp-content/uploads/
  • 置換先:http://移転先のドメイン/wp-content/uploads/transferred/

これで画像の処理は完了。

著者IDを修正しましょう

統合元と統合先の著者IDが同じであれば変える必要は有りません。

もし違う場合は、元サイトの著者IDを統合先の著者IDに変更しないと著者が変わってしまいます。post_authorフィールドはカンマに挟まれているので

置換元のIDが10で移転先が20だとすると

,10,を,20,で置換すればイケると思います。ただ、数字が小さいとカテゴリIDも変わってしまう可能性があるので、その場合は移転元サイトで捨てユーザを幾つか作ってユーザIDがカテゴリIDに被らないようにしてから移転作業すればいいんじゃないかなという気がします。

エクスポートしたCSVファイルをShift-JISに変更しても問題なく開ける場合はExcelで開いてpost_authorフィールドのみに限って置換すればおかしなことにはならないと思いますが、僕の場合はSJISで未対応文字が入っているからかエクセルで保存すると文字化けして二度とテキストエディタで開けないという罠にハマりましたので全部UTF8のファイルでいじらざるを得ませんでした。参りましたね。

インポートはReally Simple CSV Importerを使います

これを使うと、post_thumbnailに入ったURL(もしくはサーバ内パス)を直接サムネイルに入れて、postmetaにID突っ込んでくれます。便利です、素晴らしい。

それではいざインポート!

あとはタイムアウトしないようにサーバの設定を行ってからインポートすれば、全てキレイにインポートされるという寸法ですね。

と、いいつつ、恐らくファイル容量が大きいとインポートでタイムアウトの罠にハマるということが連発すると思うので、そうなったらパラメータ調整しつつインポート出来るまでチャレンジをしましょう。

関連情報:Really Simple CSV Importerでインポートがコケる一つの原因

オススメNginx本

nginx実践入門 (WEB+DB PRESS plus) 単行本(ソフトカバー) – 2016/1/16

nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。

 - Wordpress