无需语法高亮插件, 轻松在WordPress文章中显示所有代码语法
有时候写文章需要用到一些特殊的符号和代码, 但是这些代码会被与普通的文本是有区别的, 不可以直接呈现在文章中, 所以就有了各种各样的显示代码的解决方案.
使用语法高亮插件最普遍的做法, WordPress下的语法高亮插件非常丰富, 例如Syntax Highlighter 也就是Google Syntax Highlighter for WordPress, 服务器端的代码高亮插件Highlight Source Pro, 支持多中代码语言的iG Syntax Hiliter, 简单的老牌高亮插件WordPress Code Highlight, WordPress Code Highlight 插件修改而成的Coolcode等等.
但是许多人和EI一样在文章插入代码的机会非常少, 为了一两篇文章使用一个插件感觉有点小题大作. 直接在可视化编辑模式下输入代码可以显示出代码, 这些代码在可视化编辑模式下会被转换为HTML Entities(实体), 例如"&"在HTML Entities下则转换成了"&", 虽然表面上看似乎没有转换, 切换到HTML编辑模式或者查看页面的源代码就可以看到转变后的不同.
但是Wordpress会自动转换半角符号为全角符号, 因为中文中使用的都是全角符号, 全角符号会导致一个不小的问题, 就是在文章中复制下来的代码不能直接使用, 所有的代码都是使用半角符号, 例如全角的双引号替换掉半角的引号在代码中会出错. 而且修改起来非常麻烦.
我们需要关闭Wordpress自带的这个转换器来让Wordpress正常的显示我们所输入的所有代码, 也就是关闭Wordpress自带的文章符号过滤器.
方法非常简单, 打开主题的functions.php文件, 添加下面的代码:
<?php remove_filter('the_content', 'wptexturize'); ?>
上面的代码可以让文章内容的过滤器失效, 达到显示代码的作用.
如果还想要在其他地方显示正常的代码, 例如标题, 摘要, 评论, 文章标题, 博客信息, 描述, 小工具的文本等等, 可以按照自己的要求去除相应的过滤器, 可用下面的代码来达到我们的目的:
$qmr_work_tags = array(
'the_title',
'the_content',
'the_excerpt',
'comment_text',
'list_cats',
'single_post_title',
'comment_author',
'term_name',
'link_name',
'link_description',
'link_notes',
'bloginfo',
'wp_title',
'widget_title',
'term_description',
'category_description',
'widget_text'
);
foreach ( $qmr_work_tags as $qmr_work_tag ) {
remove_filter ($qmr_work_tag, 'wptexturize');
}
需要注意的一点是, 这种实现方式需要在可视化编辑模式下输入文章的代码, 在HTML模式下会导致大部分代码丢失.
如果想实现类似EI站上的代码效果, 用点CSS吧!
链接: 无需语法高亮插件, 轻松在WordPress文章中显示所有代码语法
本站所有文章,除特别标明外, 皆为原创. 如需转载, 请复制粘贴下面的代码到文章底部.
转载自 <a href="http://www.ei2u.com/wordpress/work/503.html" title="无需语法高亮插件, 轻松在WordPress文章中显示所有代码语法" rel="bookmark">无需语法高亮插件, 轻松在WordPress文章中显示所有代码语法 | e网软摘</a>
至于CSS....自己发挥吧..:)
还怕有重的呀 呵呵 新手不会玩咋整~
你可以直接参考e网软摘的CSS...直接把CSS贴出来反而会误导...
这个真伯可以有的。
有机会试试
试过你会发现很简单的...但是可以减少一个插件
哦 那源代码和css 在哪里?
源代码里面有CSS的地址...
LZ 不行啊 我查看源代码 是这行么?
//code here
但是没效果啊
多学习点基本功再试吧
EI 你好
我最近也为代码高亮插件纠集中 主要麻烦在于:多数语法高亮插件和我的主题冲突
主题是:illacrimo 且因为很喜欢这个主题 故打算弃代码高亮
但是 我的博客会以软件文字居多 代码高亮就显得必须了 故 极度困扰ing
但是 LZ 你的文章中出现的 有红标题的 那个是什么插件 能说说名字么? 还有 那个红色里面的文字 是否可以改变 ?
谢谢!
红色的那部分是CSS做出来的效果, 也就是装饰用的, 不是插件的效果.
用CSS把Pre和Code分别定义一下, 配合本文, 然后用
代码这样的方式写就可以达到这样的效果了.
哦 那能否提示下 怎么做的呢? css我不太懂
LZ 或者说 是否有类似教程呢?
谢谢
教程应该没有吧, 其实你光看我的源代码和CSS就可以做出同样的效果.