星期六 , 2020-10-24
首页 > WordPress教程 > 让WordPress贴代码时自动转义实体符号

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

在wordpress的HTML编辑器里贴代码会被自动解释,而最简便的解决方法就是切换到可视化然后转义代码。但如果你经常需要在文章内贴代码的话,每次切换到可视化是否觉得很麻烦呢?我们可以用函数:htmlspecialchars()来把一些预定义的字符转换为HTML实体。具体方法如下: 把以下代码放到functions.php里:

/*
自动转义为HTML代码
代码来源: www.wpzhinan.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('@()(.*)(<\/pre>)@isU', 'escapeCE', $data);
	$replaceTag = preg_replace_callback('@()(.*)(<\/code>)@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来高亮代码的就不会有问题。

本文地址:http://www.wpzhinan.com/jiaocheng/124.html
版权申明:除部分代码外,本站内容均为原创,转载请注明来源,违者必究侵权责任!

相关推荐

WP_Image_Editor_Imagick 指令注入漏洞修复方法

Imagick组件爆出了超级漏洞,危害等级极高,直接导致大量使用Imagick组件的网站均 ...