僕は発展途上技術者

WordPress のブログを Lokka に移行(第3部) - Redirect プラグインを作りました

» Lokkathon #11 : ATND


に参加してきました。WordPress で書かれているこのブログを Lokka に移行するプロジェクトの3回目。


これまでやったことは、


» WordPress のブログを Lokka に移行しようとしています(まだ途中) : 僕は発展途上技術者


» WordPress のブログを Lokka に移行(第2部) : 僕は発展途上技術者


に書いています。


今回やりたかったことは WordPress スタイルの URL を Lokka スタイルの URL にリダイレクトすること。たとえばこのブログだと、今月のエントリーが見られる


http://blog.champierre.com/archives/date/2011/09/


という URL は Lokka 移行後は


http://blog.champierre.com/2011/09/


というスタイルの URL にリダイレクトしたい。


正規表現でリダイレクトのルールを作成すれば、その通りリダイレクトされるプラグインを作成することにしました。


lokka-redirect プラグイン


今回も @komagata さんにいろいろ聞いて、相当助けてもらいました。


当たり前ですが、Lokka を開発している本人に聞けばほとんどのことは解決、Lokkathon に参加することでかなり捗りました。


» champierre/lokka-redirect - GitHub


からインストールできます。


redirect プラグインの管理画面で以下のようにルールを設定すれば、WordPress スタイルの URL を Lokka スタイルの URL にリダイレクトしてくれます。


僕は発展途上技術者 - Lokka

次回 Lokkathon


次回 Lokkathon は 10/5(水曜日)。


» Lokkathon #12 : ATND


準備はひと通り整った感じなので、いよいよこのブログを Lokka に移行する日が来ました。


次のエントリーはもしかしたら、Lokka からかもしれません。楽しみです。


WordPress のブログを Lokka に移行(第2部)

» Lokkathon #9 : ATND


に参加して、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 以下に移して難なく完了。


TextMate

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 に吐き出すようにしたところ、うまくいきました。



前回、こんな感じで段落がなかったところが



この通りバッチリです。


lokka.dev

残るは、


1. http://blog.champierre.com/archives/928 といった同じ URL のままで個別の記事にアクセスできるよう Lokka 側で URL を Rewrite する仕組みを用意する


の Rewrite 問題、次回の Lokkathon で取り組みます。


» Lokkathon #10 : ATND


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ