前言
通過這篇文章我們可以連結到什麼情況下適合用相對連結,什麼時候用絕對鏈接比較合適! 下面我們就來看看如何通過簡單的幾行代碼來實現WP站內相對連結的功能的!
方法分析
要想簡單的實現相對連結無非就是找到代碼的源頭,然後再源頭進行匹配和替換,那麼對於WP來說,我們的源頭是在常規裡面填寫的網址,但是這個我們是不能去修改的,值得慶幸的是WP在一般情況下是沒有直接調用常規裡面設置的網址的,而是通過一個home_url()
的函數進行應用,我們要做的就是在home_url()
這的函數的返回值中進行匹配和替換,如果跟網站功能變數名稱相同那麼就把功能變數名稱去除,如果不同則直接返回網址,這樣在相容附件伺服器的同時實現了站內相對連結的功能!
實現代碼
實現相對連結功能,我們需要用到home_url()
函數中提供的一個home_url過濾器,和WP內置的wp_make_link_relative函數來匹配替換跟主域相同的功能變數名稱:
add_filter( ‘home_url’, ‘wp_make_link_relative’ );
這個時候我們可能會發現一些問題,sitemap與feed中也調用相對鏈接那麼站外訪問和搜尋引擎抓取就會報錯,下面我們需要對上面的代碼進行優化:
add_filter( ‘home_url’, ‘cx_remove_root’ );
function cx_remove_root( $url ) {
if(!is_feed() || !get_query_var( ‘sitemap’ )){
$url = preg_replace( ‘|^(https?:)?//[^/]+(/?.*)|i’, ‘$2’, $url );
return ‘/’ . ltrim( $url, ‘/’ );
}else{
return $url;
}
}
注意事項
本教學只適用於代碼比較規範的主題,不保證相容所有主題。
教程中的代碼添加到主題的functions.php
檔中即可。