在 WordPress 開發中,經常需要獲取當前頁面的鏈接,WordPress 本身並沒有提供相關的函數,只能使用不同的函數獲取不同頁面的鏈接。

還有使用 PHP 原生代碼來獲取,但因為 WordPress 的偽靜態比較特殊,所以收環境影響比較大,很容易出錯,而且不利於擴展和管理。

用 WordPress 的原生代碼獲取是比較明智的選擇,下邊的代碼可以實現用原生函數獲取當前頁 URL.

1

$current_url=home_url(add_query_arg(array()));

子目錄

上邊的代碼還是有缺陷的,當 WordPress 安裝在子目錄的時候 (比如http://www.example.com/WordPress) 就無法獲取到正確的鏈接。

針對這個問題,用下邊的代碼就能修復了。

1

$current_url=home_url(add_query_arg(array(),$GLOBALS['wp']->request));

默認固定連接

很不幸的是,上邊的代碼又出了新的問題,如果網站安裝在子目錄,同時又使用的默認帶 「?」 的固定連接 (比如:http://www.example.com/wp/?p=4) 就又無法正確獲取。

針對這種情況使用下邊的代碼就可以獲取了。

1

$current_url=add_query_arg($GLOBALS['wp']->query_string,'',home_url($GLOBALS['wp']->request));

自動判斷

如果代碼不是給自己用的,那就無法直接選擇使用哪段代碼了,這裏我把它封裝了起來,先把下邊的代碼放到主題的 functions.php(瞭解更多) 或者插件裏邊。

/**

    *WordPress 獲取當前頁鏈接

    *https://www.weixiaoduo.com/get-current-url/

*/

functionBing_current_url(){

    global$wp;

    returnget_option('permalink_structure')==''?add_query_arg($wp->query_string,'',home_url($wp->request)):home_url(add_query_arg(array(),$wp->request));

}

然後無論什麼情況直接調用這個函數就能獲取到當前頁的鏈接了。

1

$current_url=Bing_current_url();

參考資料:http://www.ludou.org/how-to-get-the-current-url-in-WordPress.html