让WordPress贴代码时自动转义实体符号
在wordpress的HTML编辑器里贴代码会被自动解释,而最简便的解决方法就是切换到可视化然后转义代码。但如果你经常需要在文章内贴代码的话,每次切换到可视化是否觉得很麻烦呢?我们可以用函数:htmlspecialchars()来把一些预定义的字符转换为HTML实体。具体方法如下: 把以下代码放到functions.php里:
/*
自动转义为HTML代码
代码来源: www.wpzxbj.com
*/
function escapeCE($arr) {
if (version_compare(PHP_VERSION, '5.2.3') >= 0) { //所需PHP版本
$output = htmlspecialchars($arr[2], ENT_NOQUOTES, get_bloginfo('charset'), false);
}
else {
$needTo = array( //定义需要转换的标签
'&' => '&',
' '<',
'>' => '>'
);
$data = htmlspecialchars_decode($arr[2]);
$output = strtr($data, $needTo);
}
if (! empty($output)) { //如果有实体符号则进行替换
return $arr[1] . $output . $arr[3];
}
else
{
return $arr[1] . $arr[2] . $arr[3];
}
}
function replaceCE($data) { //匹配需要转换实体的标签
$replaceTag = preg_replace_callback('@()(.*)()@isU', 'escapeCE', $data);
$replaceTag = preg_replace_callback('@()(.*)()@isU', 'escapeCE', $replaceTag);
return $replaceTag;
}
add_filter( 'content_save_pre', 'replaceCE', 9 ); //通过wordpress的add_filter来挂钩
add_filter( 'excerpt_save_pre', 'replaceCE', 9 ); //支持摘要格式
通过以上方法即可在保存文章时自动转义代码,但有个问题需注意,如果你在用代码高亮插件,并且需pre+code的形式来高亮代码,这种情况下会有点问题,code前后的也将被转义,导致前台高亮代码不能实现。不过,如果你是仅用pre来高亮代码的就不会有问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















