在 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