WP Editor.md编辑器与Sakurairo主题的兼容性问题研究
或许这是一个WordPress中最好,最完美的Markdown编辑器 其实本文主要解决的是WP Editor.md编辑器无法应用在说说页面的问题,这个高大上的标题就是吓唬人的
先声明版本号,免得被时空猎杀 {{ys_chijing}} {{ys_chijing}}
- sakurairo版本:2.4.5
- WP Editor.md版本:10.2.1
WP Editor.md是WordPress里的一款markdown编辑器插件,按照作者的话来说,“或许这是一个WordPress中最好,最完美的Markdown编辑器”,这款md编辑器也得到了sakura主题作者的推荐。测试下来,在代码高亮、公式渲染、语法支持上面,确实是对sakurairo主题兼容性最好的markdown编辑器插件。

来自大佬的推荐
今天主要是想解决一个小问题,那就是WP Editor.md无法渲染发布在“说说”里面的文章。
这个问题直观的表现就是,在普通的文章页面中WP Editor.md可以正常地将markdown代码渲染成HTML文档;而在说说页面,markdown代码不能被渲染,只会源码输出,如下图:

这是前台渲染的页面

这是后台文章md源码
不难看出md源代码确实是被原样输出了,没有经过渲染。 不知道有多少小伙伴在用markdown来写作,也不知道你们是否遇到了这个问题。可能看到这里的大佬,已经看出了解决办法。 确实,这是一个很简单的问题,解决起来也不难。但还是记录一下解决办法吧水文章,如果能帮到需要的人,那就更好了。 要解决这个问题,我们需要知道主题的“说说”页面里面的“说说”是怎么来的。 查看主题源码发现,生成后台说说页面(目录?)(文章类型?)的代码如下:
function shuoshuo_custom_init(){ $labels = array( 'name' => __("Ideas", "sakurairo"), 'singular_name' => __("Idea", "sakurairo"), 'add_new' => __("Publish New Idea", "sakurairo"), 'add_new_item' => __("Publish New Idea", "sakurairo"), 'edit_item' => __("Edit Idea", "sakurairo"), 'new_item' => __("New Idea", "sakurairo"), 'view_item' => __("View Idea", "sakurairo"), 'search_items' => __("Search Idea", "sakurairo"), 'not_found' => __("Not Found Idea", "sakurairo"), 'not_found_in_trash' => __("No Idea in the Trash", "sakurairo"), 'parent_item_colon' => '', 'menu_name' => __("Ideas", "sakurairo") ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'author' ) ); register_post_type('shuoshuo', $args);}add_action('init', 'shuoshuo_custom_init');说来惭愧,因为接触WordPress的时间不算太长,许多东西还没来得及去了解,我暂时还无法向你解释这些代码。初步看起来这是在设置后台的菜单,以及建立新的文章目录(类型),并且可以向这个目录中添加文章?等我学习完,会将这些内容补上。
下面这些代码用于将所有“说说”集合到一起生成一个“说说”页面。本质上,每一条“说说”都是一篇文章。
<?php query_posts("post_type=shuoshuo & post_status=publish & posts_per_page=-1"); if (have_posts()) : ?> <ul class="cbp_tmtimeline"> <?php while (have_posts()) : the_post(); ?> <li> <span class="shuoshuo_author_img"><img src="<?php echo get_avatar_profile_url(get_the_author_meta('ID')); ?>" class="avatar avatar-48" width="48" height="48"></span> <div class="cbp_tmlabel"> <p><?php the_content(); ?></p> <p class="shuoshuo_time"><i class="fa fa-clock-o"></i> <?php the_time('Y年n月j日 G:i'); ?></p> </div> </li> <?php endwhile; ?> </ul> <?php else : ?> <h3 style="text-align: center;">你还没有发表说说噢!</h3> <p style="text-align: center;">赶快去发表你的第一条说说心情吧!</p> <?php endif; ?>在上面的代码中,可以提取到一个有用的东西post_type=shuoshuo,暂且称之为获取文章类型为shuoshuo的文章。也就是说,“说说”的文章类型为shuoshuo。
接下来看一下WP Editor.md是如何渲染文章的,或者说,它是怎么样确定那些文章是需要渲染的。 根据由上面的代码获取到了关键字post_type,来搜索WP Editor.md插件目录看看有啥发现,如下:
/** * We don"t want Markdown conversion all over the place. * * @return null */public function add_default_post_type_support() { add_post_type_support("post", self::POST_TYPE_SUPPORT); add_post_type_support("page", self::POST_TYPE_SUPPORT); add_post_type_support("revision", self::POST_TYPE_SUPPORT);}简单翻译一下注释你就会发现,这里就是用于确定插件该渲染那些类型的页面的地方。WP Editor.md渲染的页面类型包括“文章页面”、“独立页面”、“版本修订页面”。这就好办了,把“说说”页面加进去就好了。 在add_post_type_support("revision", self::POST_TYPE_SUPPORT);下一行添加“说说”页面类型add_post_type_support("shuoshuo", self::POST_TYPE_SUPPORT);
最后将“说说”重新发布(这是必要的流程),就可以将markdown渲染成HTML文档了。 示例请看动态,所有的动态均用markdown书写。
end {{kano_dacall}} {{kano_dacall}}
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!

