問題描述
是否有 WP 功能自動獲取當前頁面的正確 URL?意思是,如果我剛剛開啟一個帖子,該函式返回與 get_permalink()相同,但是如果我在一個頁面的分頁例項上 (當透過註釋分頁) 時,函式返回與 get_pagenum_link(get_query_var('paged'))相同的功能。
我搜查了鱈魚,但沒有找到我在尋找。 (但是 get_pagenum_link()甚至沒有記錄。)
我已經知道了 this function,但是如果有一個”native” WP 功能可以完成這項工作,我會很高興。
提前致謝!問候,雷內
最佳解決方案
除了 Rajeev Vyas 的答案,您不需要將任何 non-empty 引數傳遞給 add_query_arg()。以下對我來說一直很好:
// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );
// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
該功能落在 $_SERVER[ 'REQUEST_URI' ]上,並將其應用於 urlencode_deep()。見 https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673
編輯:由於 $_SERVER[ 'REQUEST_URI' ]表示未過濾的使用者輸入,當上下文更改時,應始終轉義 add_query_arg()的返回值。例如,使用 esc_url_raw() DB 資料庫或 esc_attr()或 esc_url()用於 HTML 。
更新
應該建立絕對 URI(包含方案和主機) 的示例在 sub-directories 的多站點上不起作用,因為 home_url()將返回包含路徑段的完整 URI 。對於多站點感知程式碼,更好的解決方案是:
// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );
WordPress 核心不支援多站點站點 URL 中的埠,使用者或密碼,因此這應該是足夠的。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。