WordPress如何添加代码高亮并且实现代码一键复制(不装任何插件)
Published
2023-01-28
浏览次数 : 345
实现wordpress网站代码高亮的方法有很多。我们这里讲利用highlight.js来实现的方法,
Highlight.js 官网:
Github:
https://github.com/highlightjs/highlight.js
在github上可以找到不同样式,替换css文件即可。
我们首先下载highlight.min.js文件和default.min.css文件,在wp的函数文件里通过wp_enqueue_style和wp_enqueue_script导入。
然后,我们可以通过任意方式在任意地方(比方说系统的js文件里,比方说footer.php里,比方说函数文件里通过wp_footer钩子加载),来添加启动初始化Highligh.js:
hljs.highlightAll();
这样就实现了代码的高亮,不同语言高亮方式有轻微不同,如果想要更精确,可以在后台发布代码的时候在区块,高级那里添加css: language-当前代码语言即可。
具体详细使用可见官方文档:
https://highlightjs.org/usage/
如何添加复制功能
首先我们在主题的主要js文件中,添加复制的按钮到pre code前面:
var pres = document.getElementsByTagName("pre");
for (var i = 0; i < pres.length; i++) {
pres[i].innerHTML = '<button class="copy-button" onclick="copyCode(this)">复制</button>' + pres[i].innerHTML;
}
我们设置了按钮添加的函数是copyCode,我们在js文件里添加这个函数:
function copyCode(el) {
console.log('You click the console.log');
var range = document.createRange();
console.log(range);
range.selectNode(el.nextElementSibling);
// range.selectNode(el.previousSibling);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
try {
document.execCommand('copy');
alert('成功复制代码到剪切板');
} catch (err) {
alert('Unable to copy code');
}
window.getSelection().removeAllRanges();
}
其中range.selectNode(el.nextElementSibling); 里面选择的dom有点点可能不一样,你直接在js里面打印console.log(range); 来看看 这个node到底选择哪个即可,是选择parent还是sibling还是nextElementSibling.
如果有喜欢美化的朋友还可以美化当前窗口,比方说利用sweetalert.js进行美化等。