没事用微博写了点自己的笔记,发现代码高亮没效果了,查看了下html,把pre标签的class属性给过滤了。
第一种解决方法:
在theme的functions.php中加入以下代码
function my_allowed_edittag() { define('CUSTOM_TAGS', true); global $allowedposttags, $allowedtags; $allowedposttags = array( 'strong' => array(), 'em' => array(), 'ol' => array(), 'li' => array(), 'u' => array(), 'ul' => array(), 'blockquote' => array(), 'code' => array(), 'pre' => array( 'style' => true, 'class' => true, ), 'a' => array( 'href' => array (), 'title' => array ()), 'img' => array( 'src' => array ()), ); $allowedtags = array( 'strong' => array(), 'em' => array(), 'ol' => array(), 'li' => array(), 'u' => array(), 'ul' => array(), 'blockquote' => array(), 'code' => array(), 'pre' => array(), 'a' => array( 'href' => array (), 'title' => array ()), 'img' => array( 'src' => array ()), ); } add_action('init', 'my_allowed_edittag', 10);
也可以写个插件来干这个事情。后面我发觉这个方法允许的标签全都得自己定义,于是我直接改了源代码。
第二种方法:
直接修改wp-include/kses.php文件。打开这个文件,果然发现自己定义的标签远远不够,于是直接直接修改了里面的变量**$allowedposttags**给pre添加了class=>true这个值。问题得到临时解决。其实可以写个插件,直接对kses.php中的变量直接扩展。