在 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