WordPressでGitHub Flavored Markdown使えるようにしてみた

makotokw/wp-gfm
GitHub Flavored Markdown for WordPress

なんかブログでMarkdown使いたくなったのでやっつけでWordPressプラグイン書いてみた。Markdown系のプラグインはすでにいくつもあるようだけど、使いたいのはQiitaの記法やGitHub Flavored Markdown(GFM)など、具体的に言えばインデントするコードブロックを使いたくないのと、テーブルを使いたい。

変換はPHPで頑張らずに別でRESTAPIをredcarpetを使って簡単につくれると思っていたんだけど、GithubにMarkdown Rendering APIなる変換APIがあったのでまずはこれを使ってみた。しかし1時間5000リクエストということでページをキャッシュすれば十分間に合うかと実装してみたら5000リクエストはOAuth認証のときの制限で、認証していないときは60リクエストまでの制限と判明。結局、WordPressプラグインでOAuth認証するのはだるいし、consumerのtoken埋め込んだら公開し辛いってことで、元に戻ってredcarpetを使った変換APIをherokuに立ててプラグインからリクエストを投げるようにしてみた。

code

require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

table

First Header Second Header
Content Cell Content Cell
Content Cell Content Cell

良い感じ。

ソースコードはGithubに置いてあります(今回Githubにプラグインを置いたのはこんなのプログラマにしか需要ないだろ・・・と思ったりしているから。)。WordPressプラグインはhttps://github.com/makotokw/wp-gfm。変換APIはhttps://github.com/makotokw/ruby-markdown-render-api。プラグインのwp-gfm/config.phpをconfig.php.sampleからコピーしてherokuにでもデプロイしたURLを設定すると良いです。デフォルトはGithubのRender APIになっているので1時間に60リクエストしか使えないのでご注意を。

GFMやQiita/KobitoのMarkdownに近づけるには変換APIはまだ調整の余地があるかなと思っています。個人的には見出しと箇条書きとコードブロックとテーブルが使えれば大体OKなので今は満足している。