鹿泽鹿泽  2024-09-05 11:00:01 鹿泽笔记 隐藏边栏  0 

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

添加外链跳转页面

第一步是要生成一个统一个WordPress外链跳转的页面,这个可以直接参考WordPress实现外链Go跳转效果。在网页打开外部链接的时候添加GO跳转提示的代码实现方式

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

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

评论内容中的外部链接

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;
}

评论者的链接

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;
}

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

1、文章版权归作者所有,未经允许请勿转载。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505