让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