其实本文主要解决的是WP Editor.md编辑器无法应用在说说页面的问题,这个高大上的标题就是吓唬人的
先声明版本号,免得被时空猎杀
- 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
Comments 8 条评论
这是一条私密评论
@ZeligRc9G 那个,我忘记了,不过你可以全局搜索一下插件目录,可以找到。
我主题的表情短代码没法直接插入到文章中,不过可以用clipboard.js实现点击一下复制短代码到剪贴板,再粘贴到md编辑器里就行,md编辑器貌似用的是ajax异步请求,改起来暂时没有什么头绪,以后知识面广了再回头修复吧()
@kanokano +1,我这也是人肉复制代码
@Kano酱 更新进度,看已经解决表情包与短代码插入问题,等会再看看有没有其他bug
@Kano酱 https://kanokano.cn/archives/983.html
@kanokano 这个好诶~
好一个标题党