WordPress のブログを Lokka に移行(第2部)
に参加して、WordPress で書かれているこのブログを Lokka に移行するプロジェクトの続きをやりました。
前回やった内容は、
» WordPress のブログを Lokka に移行しようとしています(まだ途中) : 僕は発展途上技術者
で書いています。
前回までで残されたタスクは
1. http://blog.champierre.com/archives/928 といった同じ URL のままで個別の記事にアクセスできるよう Lokka 側で URL を Rewrite する仕組みを用意する
2. 画像などのメディアファイルも移行する
3. WordPress では改行2つがpタグに自動的に変換されていたのが、Lokka では変換されないため、段落がまったくなくなってしまうのを何とかする
の3つ。このうち、2 と 3 を片付けました。
画像などのメディアファイルを移行
これはとても簡単。
Wordpress で使っていた画像は wp-content/uploads 以下にあったので、これをゴソッと Lokka の public 以下に移して難なく完了。
WordPress の p タグ問題
WordPress では本文中に改行2つがあると p タグに、改行1つを br タグにそれぞれ自動的に変換して表示してくれます。
しかし、これに頼って書かれたエントリーのデータ自体に p タグや br タグが差し込まれるわけではないため、エクスポートしたデータを Lokka にインポートすると、WordPress では段落分けされて表示されていたデータは、ズラッと一行になって表示されてしまいます。
これを何とかしないといかん、ということで最初、rails の simple_format のソースを参考にして、改行2つを p タグに、改行1つを br タグに一気に変換したあとインポートしてみました。
一見うまくいきそうなのですが、これだと例えば pre の中の改行2つや改行1つまで変換されてしまいます。そんな感じで例外を考えていくときりがなくて途方に暮れてしまいました。
一緒に調べてくれた @komagata さんが WordPress のソースを見てくれて、じゃあ WordPress が行っている処理を Lokka に移植すればいいんじゃないかと、なったのですが、実際にみてみると、preg_replace (置換)の嵐でとても移植する気になれません。
p タグや br タグへの自動変換は wpautop という関数でおこなわれていることを @komagata さんが突き止めてくれて、そのソースを見ていたのですが、そこでひらめきました。WordPress のエクスポートの処理に wpautop をはさめば p タグへの変換をしたあとの結果が xml ファイルに吐き出されるんではないかと。
そこで、前回のように wp-admin/includes/export.php を開き、以下の 369 行目の部分を変更、$post->post_content を wpautop で処理した上で xml に吐き出すようにしたところ、うまくいきました。
前回、こんな感じで段落がなかったところが
この通りバッチリです。
残るは、
1. http://blog.champierre.com/archives/928 といった同じ URL のままで個別の記事にアクセスできるよう Lokka 側で URL を Rewrite する仕組みを用意する
の Rewrite 問題、次回の Lokkathon で取り組みます。
2011/09/07 23:41:49