預設情況下 WordPress 系統內輸出的所有連結都是絕對連結,雖然百度官方的 SEO 檔案中說過絕對連結更容易讓蜘蛛抓取到內容,但實際上過多的絕對連結增加了網站的頁面程式碼的大小從而使網站的載入速度變慢,導致出現更不利於 SEO 的狀況。那麼如何使 WordPress 函式所呼叫的連結輸出相對連結呢?接下來小編就來教大家如何使 WordPress 呼叫相對連結。

一、使用/替換 home_url()

function rw_remove_root( $url ) {
    $url = str_replace( home_url(), '', $url );
    return '/' . ltrim( $url, '/' );
}

二、那麼如何來呼叫其他型別的相對連結呢?我們可以使用以下程式碼:

add_filter( 'post_link', 'wp_make_link_relative' );
add_filter( 'post_type_link', 'wp_make_link_relative' );
add_filter( 'page_link', 'wp_make_link_relative' );
add_filter( 'attachment_link', 'wp_make_link_relative' );
add_filter( 'get_shortlink', 'wp_make_link_relative' );
add_filter( 'get_pagenum_link', 'wp_make_link_relative' );
add_filter( 'get_comments_pagenum_link', 'wp_make_link_relative' );
add_filter( 'term_link', 'wp_make_link_relative' );
add_filter( 'search_link', 'wp_make_link_relative' );
add_filter( 'post_type_archive_link', 'wp_make_link_relative' );
add_filter( 'day_link', 'wp_make_link_relative' );
add_filter( 'month_link', 'wp_make_link_relative' );
add_filter( 'year_link', 'wp_make_link_relative' );

以上程式碼都只需加入到 functions.php 檔案中即可。

2013 年 7 月 25 日更新:請勿使用此文中的程式碼!會造成 sitemap 和 feed 中都是相對連結,搜尋引擎抓取時會嚴重報錯,無法抓取 sitemap 中的連結!

2013 年 7 月 26 號更新,解決 sitemap 與 feed 中呼叫相對連結問題。

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    if ( is_feed() || get_query_var( 'sitemap' ) ) //判斷是否為 feed 頁面或者 sitemap 頁面
        return;
    $filters = array(
        'post_link',
        'post_type_link',
        'page_link',
        'attachment_link',
        'get_shortlink',
        'post_type_archive_link',
        'get_pagenum_link',
        'get_comments_pagenum_link',
        'term_link',
        'search_link',
        'day_link',
        'month_link',
        'year_link',
    );
    foreach ( $filters as $filter )
    {
        add_filter( $filter, 'wp_make_link_relative' );
    }
}

使用 26 號更新的程式碼後即可實現在網站呼叫相對連結,sitemap 與 feed 中呼叫絕對連結。