WordPressからBloggerへの移行

AdvancedExport

自宅サーバの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を吐けるんじゃないかなぁ。

back to top