Wordpress 代码高亮 修改原生区块使后台可设置高亮语言 第一部分
Wordpress 是世界上最为流行的博客工具,很多喜爱编程的同学都使用它写技术博客,涉及到代码时,没有语法高亮是一件让读者头疼的事。
这篇文章就是记录我如何为自己的博客添加代码高亮功能,同时后台支持为代码区块(Gutenberg)设置语法高亮的语言。这是一种通用的方法,可以为任何区块新增想要的功能。
由于不可抗力,文章将会分为两部分,本文为第一部分:
- 第一部分:如何为 Wordpress 添加代码高亮功能。
- 第二部分:修改 Wordpress 后台区块编辑器来支持高亮语言的选择。
本文需要读者具有一定的 Wordpress 主题开发的基础知识。
将会用到的 API
Wordpress php Api:
- add_action()
- wp_enqueue_style()
- wp_enqueue_script()
- get_template_directory_uri()
- is_single()
- get_post_type()
准备工作
下载 highlightjs 的脚本和样式,并添加到主题目录下。
然后,创建 myguten.js 和 myguten.css 2 个文件到主题目录下。
这样,准备工作就完成了。
语法高亮
Wordpress 调用 highlightjs 很简单,只需要在文章页尾引入并执行 highlightjs 脚本就好了:
// 引入 highlightjs
function add_highlight_scripts() {
// 如果当前查询的页面是已存在的文章,且文章类型为 post,则引入 highlightjs 包
if ( is_single() && get_post_type() === 'post' ) {
?>
<script src="<?php echo get_template_directory_uri() . '/path/to/highlight.pack.js'; ?>"></script>
<script>
// 配置 highlightjs
hljs.configure({
useBR: false
});
hljs.initHighlightingOnLoad();
</script>
<?php
}
}
// 把方法添加到 wp_footer 钩子上
add_action( 'wp_footer', 'add_highlight_scripts' );
然后把 highlightjs 的 css 添加到 wordpress 的样式队列:
// 引入 highlightjs 的 css
function add_highlight_style() {
// 如果当前查询的页面是已存在的文章,且文章类型为 post,则引入 highlightjs 的样式
if ( is_single() && get_post_type() === 'post' ) {
// 加入样式队列
wp_enqueue_style( 'highlightjscss', get_template_directory_uri() . '/path/to/highlight_js_styles.css' );
}
}
// 把方法添加到 wp_enqueue_scripts 钩子上
add_action( 'wp_enqueue_scripts', 'add_highlight_style' );
把上述代码添加到 functions.php 里,每当访问文章页时,都会在页尾加入 highlightjs 脚本,当 wp_enqueue_scripts 触发时会加入 highlightjs 的样式,这些样式针对于 code 标签,如果无效,请检查要显示的代码块是否在 code 标签内。
针对特定的语言使用特定的高亮样式
highlightjs 文档里有说明,高亮显示特定的语言需要为 code 标签添加对应的类名,比如说 python:
<code class="python">...<code>
但是我们在编辑文章的时候,原生区块并没有提供选择语言的功能,因此需要自己添加。
有一种比较笨的办法,就是使用代码编辑器,然后手动为每个 code 标签添加类名。
笨,但是有效 :)
可是很烦人,每次都要手动更新,如果代码段数量多的话,简直要命。
所以有必要针对代码区块添加直接选择使用语言的功能,我将在第二部分中介绍添加的方法。