• 推荐!搬瓦工官方代理,自动更换被封IPJust My Socks

ad

WordPress评论网站外链新窗口打开 并实现内链跳转

有时候WordPress评论里会出现很多广告外链,以及外部网站链接,虽然已经加了nofollow标签,但是一些违规的外链,还是或多或少对自己网站有点影响,而且也希望在新窗口打开这些链接,所以就想写个钩子把这些外部链接全部加上内部跳转,并且全部在新窗口打开。

 

添加外链跳转页面

第一步是要生成一个统一个WordPress外链跳转的页面,这个可以直接参考WordPress实现外链Go跳转效果

 

评论与评论者的外部链接添加跳转效果

直接在functions.php文件里添加下面两端代码即可。

1.评论内容中的外部链接

add_filter( 'comment_text', 'add_redirect_comment_link', 99 );
function add_redirect_comment_link( $text = '' ) {
	preg_match_all( '/<a(.*?)href="(.*?)"(.*?)>/', $text, $matches );
	if ( $matches ) {
		foreach ( $matches[2] as $val ) {
			if ( strpos( $val, '://' ) !== false && strpos( $val, home_url() ) === false && ! preg_match( '/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i', $val ) ) {
				$text = str_replace( "href=\"$val\"", "href=\"" . home_url() . "/go/go.php?url=$val\" ", $text );
			}
		}
		foreach ( $matches[1] as $val ) {
			$text = str_replace( "<a".$val, "<a".$val." target=\"_blank\" ", $text );
		}
	}
	return $text;
}

2.评论者的链接

add_filter( 'get_comment_author_link', 'add_redirect_author_link', 5 );
function add_redirect_author_link( $text = '' ) {
	preg_match_all( "/<a(.*?)href='(.*?)'(.*?)>/", $text, $matches );
	if ( $matches ) {
		foreach ( $matches[2] as $val ) {
			if ( strpos( $val, '://' ) !== false && strpos( $val, home_url() ) === false && ! preg_match( '/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i', $val ) ) {
				$text = str_replace( "href='$val'", "href='" . home_url() . "/go/go.php?url=$val' ", $text );
			}
		}
		foreach ( $matches[1] as $val ) {
			$text = str_replace( "<a".$val, "<a".$val." target=\"_blank\" ", $text );
		}
	}
	return $text;
}

 

OK,添加完l这两段代码就可以自动过滤评论者链接以及评论内容中的外部链接,自动添加跳转效果并在新窗口中打开了~

点赞