让WordPress贴代码时自动转义实体符号 - 利剑分享-科技生活-利剑分享-科技生活
利剑分享-科技生活-利剑分享-科技生活
利剑分享-科技生活

让WordPress贴代码时自动转义实体符号

让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
喜欢就支持一下吧
点赞0 分享