首页 > 插件推荐 > 后台定制 > WordPress源码实现对MarkDown语言支持
2018
09-21

WordPress源码实现对MarkDown语言支持

WordPress并不支持MarkDown语言,虽然能找到很多第三方MarkDown插件,但都无法达到想要的效果。MrBang一直以来都是用主题自带的文本模式(HTML)功能写文章,虽然排版效果好,但是写起来真的很费劲,效率也不高,于是想实现WordPress支持MarkDown,并且不需要安装插件。

下载Parsedown

Parsedown可以将MarkDown内容解析为HTML,如果内容已经是HTML则不进行解析,有了Parsedown的支持,在发表WordPress文章的时候不仅兼容原来的文本模式(HTML)也可以使用MarkDown语法写作,两者互不冲突。

  1. 前往 https://github.com/erusev/parsedown/releases/ 下载最新版Parsedown
  2. 在主题目录下新建一个目录extend
  3. 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,80,'UTF-8');
        echo $content;
    }
}
add_action('the_content','wp_parsedown');

注意上面的$content = mb_substr($content,0,80,'UTF-8');这一行,其中80代表首页文章摘要字数,请根据自身情况修改。

切换到文本模式

WordPress文本模式本身就支持HTML写作,通过上面的步骤后,文本模式已经完美支持了MarkDown语法。

wordpress markdown - WordPress源码实现对MarkDown语言支持

总结

此方法操作简单,无需安装额外的插件,完美兼容原来的文本模式。

最后编辑:
作者:MrBang
WordPress迷

留下一个回复