Pjax全站支持语法高亮笔记
实现语法高亮
个人极力推荐Prism.JS,轻量级且支持语法很多,也很方便。
首先在官方download选择自己所需要的语法文件,下载prism.js和prism.css
打开主题的function.php插入下面的代码:
function add_prism() {
wp_register_style(
'prismCSS',
get_stylesheet_directory_uri() . '/prism.css' //自定义路径
);
wp_register_script(
'prismJS',
get_stylesheet_directory_uri() . '/prism.js' //自定义路径
);
wp_enqueue_style('prismCSS');
wp_enqueue_script('prismJS');
}
add_action('wp_enqueue_scripts', 'add_prism');
就这样OK。在文章高亮代码编辑如下:
<pre class="language-php"><code class="language-php"> code_here </code></pre>
对无刷新 pjax的支持
只需要在Ajax请求完成时执行highlightAll()函数,可在下面两种方法中选任意一种;
方法一:
// Rerun Prism syntax highlighting on the current page
Prism.highlightAll();
由于第一种方法Prism.js需要重新查找新增的DOM节点内容,资源占用相对要高,所以你也可以用第二种方法:
方法二:
// Say you have a code block like this
/**
// This is some random code
var foo = "bar"
**/ // Be sure to select the inner and not the // Using plain Javascript var block = document.getElementById('some-code') Prism.highlightElement(block); // Using JQuery Prism.highlightElement($('#some-code')[0]);
像Pjax WordPress主题可以在footer添加:
<script data-no-instant>
InstantClick.on('change', function(isInitialLoad) {
if (isInitialLoad === false) {
// support Prism
if (typeof Prism !== 'undefined') Prism.highlightAll();
}
});
InstantClick.init('mousedown');
</script>