WordPress 站点中所有的外链在新窗口中打开,并且自动添加 NOFOLLOW 属性,有利于 SEO。

/**
 * 外链网址
 */
function externalLink( $content ) {

	$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>";

	if ( preg_match_all( "/$regexp/siU", $content, $matches, PREG_SET_ORDER ) ) {
		if ( ! empty( $matches ) ) {
			$site = get_option( 'siteurl' );
			for ( $i=0; $i < count( $matches ); $i++ ) {
				$new = $matches[$i][0];
				$old = $matches[$i][0];
				$url = $matches[$i][0];
				$noFollow = '';
				$pattern  = '/target\s*=\s*"\s*_blank\s*"/';
				preg_match( $pattern, $old, $match, PREG_OFFSET_CAPTURE );
				if ( count( $match ) < 1 ) $noFollow .= ' target="_blank" ';
				$pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/';
				preg_match( $pattern, $old, $match, PREG_OFFSET_CAPTURE );
				if ( count( $match ) < 1 ) $noFollow .= ' rel="nofollow" ';
				$pos = strpos( $url, $site );
				if ( $pos === false ) {
					$new  = rtrim ( $new, '>' );
					$new .= $noFollow . '>';
					$content = str_replace( $old, $new, $content );
				}
			}
		}
	}

	$content = str_replace( ']]>', ']]>', $content );

	return $content;

}
add_filter( 'the_content', 'externalLink' );