wordpress纯代码实现外链自动增加rel=external并显示图标

wordpress纯代码实现站外链接自动增加rel=external,并显示外链图标。让访客更加容易的分辨外部链接,提升用户体验。
具体代码如下:

function url_domain_name($url){
	preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $match);
	$host = $match[2];
	preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $match);
	return $match[0];
}
//判断是否为图片链接
function external_image($url) {
        $chain=strtolower($url);
	if ((strpos($chain, '.jpg') > 0) || (strpos($chain, '.gif') > 0) || (strpos($chain, '.png')  > 0))
	{
		return true;
	}
	return false;
} 

function parse_external_link($match){
if ( !external_image($match[3]) && (url_domain_name($match[3]) != url_domain_name($_SERVER["HTTP_HOST"])) ){
		if(preg_match('/rel="(.*?)"/', $match[1], $external)){
			$rel = strpos(strtolower($external[1]),"external")?$external[1]:$external[1].' external';
			$match[1]=str_replace($external[0],'',$match[1]);
		}else if(preg_match('/rel="(.*?)"/', $match[4], $external)){
			$rel = strpos(strtolower($external[1]),"external")?$external[1]:$external[1].' external';
			$match[4]=str_replace($external[0],'',$match[4]);
		}
		$rel=!empty($rel)?'rel="'.$rel.'"':'rel="external nofollow"'; 
		return '' . $match[5] . '';
	} else {
		return '' . $match[5] . '';
	}
}

function external_link($url) {	
	$pattern = '/(.*?)<\/a>/i';
	$url = preg_replace_callback($pattern,'parse_external_link',$url);
	return $url;
}
add_filter('the_content', 'external_link');
add_filter('comment_text', 'external_link')

复制以上内容到functions.php文件中
CSS代码:

a[rel~="external"]{padding-right: 16px;background: transparent url("images/link_external.png") 99% 40% no-repeat;}

具体效果见下面的链接
当然如果你嫌麻烦,也可以下载插件。下载地址:
sem external links

“wordpress纯代码实现外链自动增加rel=external并显示图标”的9个回复

      1. 貌似我把代码改成rel=”nofollow”也行的,现在想把判断图片这段代码删除,但删除了不成功 [害羞]
        还有博主用的这个第三方评论多说在IE6游览器下访问你博客和发言超卡的,谷歌游览器和火狐就不卡

    1. 检查一下单引号和双引号有没有问题,复制粘贴会变成中文的符号。

发表评论

电子邮件地址不会被公开。 必填项已用*标注