wordpressでreStructuredText
wordpressはとっても最高なCMSだけども、reStructuredTextで書けないために使用を断念することも多いかと思います。
そこで、ちょっと探してみたところ WordPreSt reStructuredText Plugin For WordPress ↯ xdissent.com というプラグインがありました。
しかし、残念なことに新しめのwordpressではうまく動かないようです。
そこでちょっといじってみて、とりあえず投稿できるようにはなりました。これもそのプラグインを使って投稿してみました。
しかし山ほど問題が。。。
エディタボタン周りの処理
問題というか、単にwordpressの仕組みをわかってないだけなんですが、元々のwordprestだと:
add_action('edit_form_advanced', array(__CLASS__, 'addRestEditor'));
という処理で、エディタの選択ボタンにRestを追加する処理があって、そこでは、ob_get_cleanでバッファを取ってきてエディタのコードを置換する。
しかし、現在のwordpressではその時点のバッファにはエディタのコードが含まれていないみたい。なので別のタイミング(action)か別の方法でやらないとだめなんだろうけど、さぱーりわからない。
きっと同じような仕組みで、markdownあたりのプラグインはありそうなので、そこらへんを漁ってみたら参考になるかも。
というところでおしまい。今はwordpressのclass-wp-editor.phpをいじって動かしてます。
他にもうまく保存できなかったりとか大問題が色々あるけど、そのうち・・・
code
diff --git a/wp-includes/class-wp-editor.php b/wp-includes/class-wp-editor.php index f057f5f..738b15e 100644 --- a/wp-includes/class-wp-editor.php +++ b/wp-includes/class-wp-editor.php @@ -78,6 +78,9 @@ final class _WP_Editors { if ( 'html' == wp_default_editor() ) { add_filter('the_editor_content', 'wp_htmledit_pre'); + } elseif ( 'rest' == wp_default_editor() ) { + add_filter('the_editor_content', 'wp_htmledit_pre'); + $switch_class = 'rest-active'; } else { add_filter('the_editor_content', 'wp_richedit_pre'); $switch_class = 'tmce-active'; @@ -85,6 +88,7 @@ final class _WP_Editors { $buttons .= '<a id="' . $editor_id . '-html" class="hide-if-no-js wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">' . __('HTML') . "</a>\n"; $buttons .= '<a id="' . $editor_id . '-tmce" class="hide-if-no-js wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);">' . __('Visual') . "</a>\n"; + $buttons .= '<a id="' . $editor_id . '-rest" class="hide-if-no-js wp-switch-editor switch-rest" onclick="switchEditors.switchto(this);">' . __('Rest') . "</a>\n"; } echo '<div id="wp-' . $editor_id . '-wrap" class="wp-editor-wrap ' . $switch_class . '">';
もっと勉強しないとダメですね・・・。