标签: markdown

让Enlighter支持Markdown(第三方编辑器)

时隔很多年,装回了 WordPress,看到后台惊呆了,根本不是我以前认识的 WordPress。新的编辑器实在适应不来,索性换成 Markdown。

安装了 WP Githuber MD,默认是 Prism 高亮代码,但样式不太喜欢。找了下有个叫 Enlighter 的热门插件,但是安装后怎么都不起效,开启了兼容模式代码还是 Plain Text。查了官方文档,最终发现兼容模式只是兼容后台 Editor,跟前台没关系。

继续搜索后发现,最近正好有人解决了这个问题。

原文:解决Githuber MD插件代码高亮不能正常工作的问题

修改外观 - 主题文件编辑器 - inc/template-functions.php(原文是 core.php),插入以下转换代码。

/**
 * Use EnlighterJS in Markdown
 * 
 * Source: http://cppdebug.com/archives/438
 * 
 * Author: 大脸猫
 */
function getPar($par,$str){
    $pieces = preg_split($par, $str,-1,PREG_SPLIT_DELIM_CAPTURE);
    $result ='';
    foreach($pieces as $piece){
        $result.=$piece;
    }
    return $result;
}

//转换代码高亮器
function bTagFilter($content) {
        $pattern_full = '{(<pre><code class="language-[\s\S]*?">[\s\S]*?<\/code><\/pre>)}';
        $pattern_full1 ='{<pre><code class="language-[\s\S]*?">([\s\S]*?)<\/code><\/pre>}';
        $pattern_full2 ='{<pre><code class="language-([\s\S]*?)">[\s\S]*?<\/code><\/pre>}';
        //使用短代码的正则分割字符串
        $pieces = preg_split($pattern_full, $content,-1,PREG_SPLIT_DELIM_CAPTURE);
        $new_content = '';
        //遍历所有的字符串 含有段代码的字符串不做自动处理
        foreach($pieces as $piece) {
            if (preg_match($pattern_full, $piece, $matches)) {
                $code = $matches[0];
                $lug = getPar($pattern_full2,$piece);
                $code = getPar($pattern_full1,$piece);
                $code = '<pre class="EnlighterJSRAW" data-enlighter-language="'.$lug.'">'.$code.'</pre>';
                $new_content .= $code;
            } else {
            $new_content .= $piece; }
        }
    return $new_content;
}

之后 Enlighter 就实时生效了,应该不局限于 Markdown,其他编辑器也可以试试。