WordPress免插件实现MarkDown语法支持

2018年9月20日07:55:44 发表评论 293

WordPress默认不支持MarkDown标记(不知道最新版实现没有),虽然提供了很多第三方MarkDown插件,但都无法达到满意的效果。一直以来都是用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钩子

  1. //markdown解析
  2. function wp_parsedown(){
  3.     include_once(get_stylesheet_directory()."/extend/Parsedown.php");
  4.     $Parsedown = new Parsedown();
  5.     $content = get_the_content();
  6.     $content = $Parsedown->text($content);
  7.     if(is_single() || is_page()){
  8.         echo $content;
  9.     }
  10.     else{
  11.         $content = strip_tags($content);
  12.         $content = mb_substr($content,0,180,'UTF-8');
  13.         echo $content;
  14.     }
  15. }
  16. add_action('the_content','wp_parsedown');

如果文章外链需要自动添加nofollow并且在新窗口打开,请使用下面的代码:

  1. //markdown解析,添加nofollow
  2. function wp_parsedown(){
  3.     include_once(get_stylesheet_directory()."/extend/Parsedown.php");
  4.     $Parsedown = new Parsedown();
  5.     $content = get_the_content();
  6.     $content = $Parsedown->text($content);
  7.     if(is_single() || is_page()){
  8.         preg_match_all('/href="(.*?)" rel="external nofollow" target = "_blank" /',$content,$matches);
  9.          if($matches){
  10.           foreach($matches[1] as $val){
  11.            if( strpos($val,home_url())===false ) $content=str_replace("href=\"$val\"",
  12.         "href=\"$val\" rel=\"external nofollow\" target = \"_blank\" ",$content);
  13.           }
  14.          }
  15.         echo $content;
  16.     }
  17.     else{
  18.         $content = strip_tags($content);
  19.         $content = mb_substr($content,0,180,'UTF-8');
  20.         echo $content;
  21.     }
  22. }
  23. add_action('the_content','wp_parsedown');

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

切换到文本模式

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

WordPress免插件实现MarkDown语法支持

提示

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

weinxin
我的微信
分享和发布网站源码、免费软件下载和网站搭建技术教程,致力创造一个高质量网络资源教程的分享平台。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: