自宅サーバのWordpressからgoogleのBloggerに以降するための準備を少しずつ進めています。そんな中でちょっとだけ嵌ったのが過去のエントリーの引越し作業。
BloggerにはXMLをインポートする機能があるのですが、インポートできるのはBlogger用に整形されたXMLだけです。Wordpressにも過去のエントリーをまとめてエクスポートする機能がありますが、こちらも出力されるのはWordpressの独自形式。ですが、幸いなことにWordpress形式のXMLをBlogger形式に変換するWordPress2Bloggerというサービスがあります。
しかしながら、残念なことにWordPress2Bloggerでは変換結果が1Mを超えるファイルはエラーになるようです(実際には1.8M程度は平気でした)。なので、スクリプトをダウンロードしてしてローカルで試しましたが、やっぱりエラー。どうやら変換ファイルが大きくなるとエラーになってしまうようです(試したファイルは5.5Mでした)。
WordPressで出力したファイルをXMLの規則にしたがって手動で分割してもいいのですが、面倒だったので、Advanced ExportというWordpressのプラグインを導入しました。こいつを使うと、通常はまとめて1ファイルとしてしかエクスポートできない過去のエントリーを、月別やカテゴリー別でエクスポートすることが可能になります。
で、Advanced Exportで月別に分けてエクスポートしたXMLをWordPress2BloggerでBlogger形式に変換したところ、無事に変換でき、Bloggerにインポートすることができました。
しかし、何かおかしい。よく見てみると、エントリーの投稿時刻がおかしなことになっている。たとえば、このサイトのWordpressで1月1日09:00に投稿した記事があるとすると、これをBloggerにインポートすると、投稿時刻が1月1日18:00になってしまうのです。つまり、Wordpressのタイムスタンプ+9時間、要するにBlogger側で設定したタイムゾーンにしたがって時間が修正されているのです(東京はGMT+9時間)。が、残念なことにWordpress側でもタイムゾーンの補正(GMT+9時間)がされているため、トータルでGMT+18時間というおかしなことになってしまっています。
WordPress側で出力したXMLを見ると、タイムゾーンで補正された時刻とGMTの時刻が別々に存在しているのですが、どうやらWordpress2BloggerがGMT時刻ではなく、タイムゾーンで補正された時刻を投稿時刻として採用し、しかもBloggerがそれにまた補正を加えている様子。
XMLを置換してもよかったのですが、Advanced Exportのスクリプトで、Wordpressの出力XMLがGMT時刻のみになるように修正してしまいました。
修正したのは、ra-export.phpの
<wp:post_date><?php echo $post->post_date; ?></wp:post_date>
<wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
という部分。ここを、
<wp:post_date><?php echo $post->post_date_gmt; ?></wp:post_date>
としたところ、インポートしても時刻が正しくなるようになりました。
余談ですが、ひょっとしたら、このプラグインを修正する方法で、Wordpressから直接Blogger形式のXMLを吐けるんじゃないかなぁ。