自動給WordPress文章或迴響內容的站外鏈接添加Nofollow屬性

出於SEO方面的考慮,對於文章或迴響內容的站外鏈接,不少人都希望自動添加nofollow屬性,直接將下面的代碼添加到主題的 functions.php 文件即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
add_filter('the_content', 'auto_nofollow'); //nofollow文章內容的站外鏈接
 
add_filter('comment_text', 'auto_nofollow'); //nofollow迴響內容的站外鏈接
 
function auto_nofollow($content) {
    //return stripslashes(wp_rel_nofollow($content));
 
    return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback', $content);
}
 
function auto_nofollow_callback($matches) {
    $link = $matches[0];
    $site_link = get_bloginfo('url');
 
    if (strpos($link, 'rel') === false) {
        $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link);
    } elseif (preg_match("%href=S(?!$site_link)%i", $link)) {
        $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link);
    }
    return $link;
}

add_filter(‘the_content’, ‘auto_nofollow’); //nofollow文章內容的站外鏈接
add_filter(‘comment_text’, ‘auto_nofollow’); //nofollow迴響內容的站外鏈接
function auto_nofollow($content) {
//return stripslashes(wp_rel_nofollow($content));
return preg_replace_callback(‘/<a>]+/’, ‘auto_nofollow_callback’, $content);
}
function auto_nofollow_callback($matches) {
$link = $matches[0];
$site_link = get_bloginfo(‘url’);
if (strpos($link, ‘rel’) === false) {
$link = preg_replace("%(href=S(?!$site_link))%i", ‘rel="nofollow" $1’, $link);
} elseif (preg_match("%href=S(?!$site_link)%i", $link)) {
$link = preg_replace(‘/rel=S(?!nofollow)S*/i’, ‘rel="nofollow"’, $link);
}
return $link;
}

代碼中的第1、3行分別是針對文章內容、迴響內容的,請根據自己的需要選擇。比如不需要自動給文章內容的站外鏈接添加 nofollow 的話,就註銷或刪除第一行代碼。

發佈留言