在 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