WordPress默认不支持MarkDown标记(不知道最新版实现没有),虽然提供了很多第三方MarkDown插件,但都无法达到满意的效果。xiaoz一直以来都是用HTML标签来写文章,虽然排版效果好,但是写起来真的很费劲,效率也不高,于是想到一个法子让WordPress更好的支持MarkDown语法,并且不需要安装额外的插件。

下载Parsedown
Parsedown可以将MarkDown内容解析为HTML,如果内容已经是HTML则不进行解析,有了Parsedown的支持,在发表WordPress文章的时候不仅兼容原来的文本模式(HTML)也可以使用MarkDown语法写作,两者互不冲突。
- 前往 https://github.com/erusev/parsedown/releases/ 下载最新版Parsedown
 - 在主题目录下新建一个目录
extend - 将
Parsedown.php放到extend目录 
添加钩子
将下面的代码添加到主题目录的functions.php注册为WordPress钩子
//markdown解析
function wp_parsedown(){
    include_once(get_stylesheet_directory()."/extend/Parsedown.php");
    $Parsedown = new Parsedown();
    $content = get_the_content();
    $content = $Parsedown->text($content);
    if(is_single() || is_page()){
        echo $content;
    }
    else{
        $content = strip_tags($content);
        $content = mb_substr($content,0,180,'UTF-8');
        echo $content;
    }
}
add_action('the_content','wp_parsedown');如果文章外链需要自动添加nofollow并且在新窗口打开,请使用下面的代码:
//markdown解析,添加nofollow
function wp_parsedown(){
    include_once(get_stylesheet_directory()."/extend/Parsedown.php");
    $Parsedown = new Parsedown();
    $content = get_the_content();
    $content = $Parsedown->text($content);
    if(is_single() || is_page()){
        preg_match_all('/href="(.*?)" rel="external nofollow" target = "_blank" /',$content,$matches);
         if($matches){
          foreach($matches[1] as $val){
           if( strpos($val,home_url())===false ) $content=str_replace("href=\"$val\"", 
        "href=\"$val\" rel=\"external nofollow\" target = \"_blank\" ",$content);
          }
         }
        echo $content;
    }
    else{
        $content = strip_tags($content);
        $content = mb_substr($content,0,180,'UTF-8');
        echo $content;
    }
}
add_action('the_content','wp_parsedown');注意上面的$content = mb_substr($content,0,180,'UTF-8');这一行,其中180代表首页文章摘要字数,请根据自身情况修改。
切换到文本模式
WordPress文本模式支持HTML写作,通过上面的步骤文本模式已经完美支持了MarkDown语法。

其它说明
此方法操作简单,无需安装额外的插件,完美兼容原来的文本模式。在写这篇文章的时候xiaoz已经在用Markdown写作,大家可以看看效果如何。
- 如果需要支持代码高亮可参考:《WordPress免插件实现代码高亮》
 - 参考:《用代码增强WordPress编辑器》 可自定义常用的markdown标记
 











试了好久才弄好
添加了这些代码之后短代码还有一些插件(比如Smartideo,hermit-x)失效了
为啥不生效呀
折腾不止,每天都要学习!加油!
请教Z大,这个方式的话,如何自定义 Markdown 样式?
CSS样式要自己写,这个方法只负责将Markdown渲染为html
问题是修改后主页以前的文章正常排版显示,而添加后变成了没有格式的字符堆积
后面的文章用的MarkDown写作吗?如果没有样式可能需要重写编写CSS
以前是默认编辑器的富文本格式
很遗憾,在我的博客上竟然不生效!不解析 MarkDown 语法!无语了都!
感觉这个方法最好了!
那你用上没?
呵呵,我正在研究代码准备试试!
我现在感觉 WordPress 很有可能是无缘 MarkDown 了!
面插件
谢谢,已经修正。
这个还行,今天一直在找WP和Markdown兼容的教程
之前试了很多插件兼容性都不太好,目前用这个方案感觉效果还不错。
Emm不过还是有点问题,在我的博客上会出现以前的文章排版混乱的现象