|
Jan
05
|
|
|
Categories: WP/WP Plugins
| Tags: wordpress
| Views: 1,548
|
有时候在发文章的时候,需要贴一些代码。
一般大家都用的是可视化的编辑器,如FCKEditor,甚至wp自带的编辑器都是可视化的。
大家习惯了(至少我是)在可视化的模式化写东西,我想没有谁去一个个敲HTML源码吧。。。
但是在贴代码的时候会有一些问题,如 "a"=>2 ; 你在可视化的模式中敲下这行代码,再转入源代码看就变成了 "a"=>2; ,当然, 如果你不用语法高亮插件,这个时候在前台显示是没有问题的,一样能显示 "a"=>2 ; ,但是我想贴代码如果不高亮,那就犹如一张黑白照片,古板而没有生机。
但是如果你采用一些语法高亮插件(我用的是WP-codebox),你就会发现你的烦恼来了,如果你的代码是在可视化模式下输入的,那么在前面就显示"a"=>2; (WP-codebox是,其他我未用),然而这并不是我们想要的效果,以往我的做法就是在源代码的视图下贴代码,自己编辑源代码,并且文章一旦写好,就再也不敢修改,因为一修改在源代码视图里写好的东西又被转换了,苦不堪言。也想过换插件,可是又怕以前贴的代码乱了,一直没换,再者,开始用语法高亮插件的时候也看过一些插件的比较的文章,觉得还是这款效率好一些。
下面来说如何解决这个问题。
其实思路也很简单,编辑器把HTML编码了,我们再解码就行了。也曾想过让编辑器不转换HTML代码,但是发现很麻烦,因为并不是所有的HTML都不需要转换,对于wp-codebox,pre以外的代码是需要的,于是放弃了这个想法,然后只能让wp-codebox委屈一下,在处理之前先把被编辑器转换过的代码再转换过来,因为wp-codebox只处理pre的代码,所以不会干扰其他的代码。
打开wp-codebox的文件main.php,其中在这么一行:
1 | $geshi = new GeSHi($code, $language); |
在这一行改成:
1 | $geshi = new GeSHi(wp_codebox_unhtmlentites($code), $language); |
然后再在这一页的其他地方添加一个函数:
1 2 3 4 5 6 7 8 9 10 | function wp_codebox_unhtmlentites($string) { //把被编辑器转换的HTML代码转换回来 static $aTransSpecchar = array( '"' => '"', ' ' => ' ', '<' => '<', '>' => '>', '&' => '&', ); return strtr($string, $aTransSpecchar); } |
这个时候,你在可视化模式下输入的代码是什么样,就是什么样了,再也不用担心编辑器把HTML的特殊字符转换了,并且写好的文章可以随便的修改了。
如果其他高亮插件有同样的问题,可以参照上面的修改办法进行修改就可以解决问题了。


贵站链接已经做好
这个做法不错,试试看,我写日志时候,一般都是直接编辑HTML的,或者使用标签
建议你在本地先测试一下,直接编辑HTML感觉效率有点低了,并且如果你采用默认视图的可视化视图的话,修改文章的时候一打开那些符号就又被转换了
“<!-- -->”这个标签好像留言没法显示
被当作HTML注释了? 留言这块我到是没太在意。
看到这篇文章,我感动得眼泪都快出来了。。。。折磨我好久的问题啊。。。
@mxm:建议你看看这篇文章
http://pwwang.com/technology/wp-wp-plugins/who_moved_your_codes/