名言簿丨mottobook
相信文字的力量!名人名言,经典语录,深度好文,哲理故事,寓言,格言,箴言,座右铭精选,文字的光辉,犹如黑夜的明星,海上的灯塔,指引前行的方向,在潜移默化中打开格局,提升自我,成就人生!

解决wordpress链接默认target=”_blank”

在functions.php中找到了设置默认target=”_blank”的代码

/**
 * 文章自动nofollow
 */
add_filter( 'the_content', 'ioc_seo_wl');
function ioc_seo_wl( $content ) {
    $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>";
    if(preg_match_all("/$regexp/siU", $content, $matches, PREG_SET_ORDER)) {
        if( !empty($matches) ) {
            $srcUrl = get_option('siteurl');
            for ($i=0; $i < count($matches); $i++)
            {
                $tag = $matches[$i][0];
                $tag2 = $matches[$i][0];
                $url = $matches[$i][0];
   
                $noFollow = '';
                $pattern = '/target\s*=\s*"\s*_blank\s*"/';
                preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
                if( count($match) < 1 ){
                    $noFollow .= ' target="_blank" ';
                }
                $pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/';
                preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
                if( count($match) < 1 ){
                    $noFollow .= ' rel="nofollow" ';
                }
                $pos = strpos($url,$srcUrl);
                if ($pos === false) {
                    $tag = rtrim ($tag,'>');
                    $tag .= $noFollow.'>';
                    $content = str_replace($tag2,$tag,$content);
                }
            }
        }
    }
    $content = str_replace(']]>', ']]>', $content);
    return $content;
}

这段代码的目的是在WordPress网站的文章内容中自动为外部链接(即非当前网站链接)添加rel="nofollow"属性,并在某些情况下(如果链接没有target="_blank"属性)也添加target="_blank"属性。这样做主要是出于SEO(搜索引擎优化)和用户体验的考虑。

下面是优化后的代码

function ioc_seo_wl($content) {  
    // 获取当前网站的URL  
    $pattern = "/<a\s[^>]*href=(\"??)([^\" >]*?)(\"??)[^>]*>(.*)<\/a>/siU";  
    $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)(\"??)[^>]*>";  
    if(preg_match_all($pattern, $content, $matches)) {  
        $site_url = get_option('siteurl');  
  
        for($i = 0; $i < count($matches[0]); $i++) {  
            $pos = strpos($matches[2][$i], $site_url);  
  
            if ($pos === false) { // 链接不是本站链接  
                $nofollow = ' rel="nofollow"'; // 添加nofollow属性  
                  
                // 这里我们不添加 target="_blank" 属性  
                $noFollow = $nofollow; // 只包含nofollow部分  
  
                $tag = $matches[0][$i];  
                $tag = preg_replace("/(<a\s[^>]*href=(\"??)([^\" >]*?)(\"??)[^>]*)/siU", "$0$noFollow", $tag);  
                $content = str_replace($matches[0][$i], $tag, $content);  
            }  
        }  
    }  
  
    return $content;  
}  
add_filter('the_content', 'ioc_seo_wl');
Scroll Up