有时候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这两段代码就可以自动过滤评论者链接以及评论内容中的外部链接,自动添加跳转效果并在新窗口中打开了~
相关文章