昨天花了半天时间专门处理代码高亮的插件问题,尝试了很多个都以失败告终。一直以为是因为版本兼容的问题。
我使用的是WordPress MU2.9.2版,很多插件都是很早发布的,所以不确定问题在哪。幸好发现了“WordPress与Google Syntax的兼容性问题”,发现的确pre标签的属性被修改了。不过这个只解决一个问题,就是默认的WordPress编辑器的visual和html切换时的问题,在wp-admin/includes/post.php的“initArray”最后面添加了一行代码,
view plaincopy to clipboardprint?
‘extended_valid_elements’ => “pre[name|class]”
之后的确不会在切换时不会在去掉name属性了。
可是这样代码高亮还是显示不出来,因为保存时还是会将name和class两个属性都去掉。经搜索发现,WordPress MU的确对HTML标签做了过滤操作,具体见“变态的WordPress MU的html过滤”。由于不会PHP,也不想改那么多不懂的地方,于是继续搜索更加可行的解决方案。“怎样在WordPress MU中使用Javascript标签”这篇文章的方法比较简单方便,于是尝试着做了下面的改动:
修改wp-includes文件夹下的kses.php文件,查找到“allowedposttags”,这里定义了所有允许的标签和相应的属性,由于Google Syntax插件只需要对pre标签添加两个属性:name和class(更多的属性自己可以考虑添加),所以我找到在“allowedposttags”里的pre标签(所有标签是按字母顺序排列的,很好找)的定义
view plaincopy to clipboardprint?
‘pre’ => array(
‘style’ => array(),
‘width’ => array())
在里面添加了name和class属性,如下
view plaincopy to clipboardprint?
‘pre’ => array(
‘style’ => array(),
‘width’ => array(),
‘name’ => array(),
‘class’ => array()
)
这样保存的时候就不会过滤掉name和class属性了,Google Syntax也可以正常显示了。