WordPress 获取当前页链接
在 WordPress 开发中,经常需要获取当前页面的链接。WordPress 本身并没有提供相关的函数,对于不同的页面类型,只能使用不同的函数获取当前页面的链接。我们可以使用 PHP 原生的全局数组变量 $_SERVER['REQUEST_URI']
来实现,但 WordPress 网站的伪静态比较特殊,受环境影响严重,而且代码过多、容易出错,不利于扩展和管理。下文介绍如何使用 WordPress 的原生的函数来实现这一功能。
一、适用于网站无子目录
用 WordPress 的原生代码获取是比较明智的选择,下边的代码可以实现用原生函数获取当前页 URL。
$current_url = home_url( add_query_arg( array() ) );
这段代码适用于绝大多数的 WordPress,但它还是有缺陷的。当 WordPress 安装在子目录时(例如:http://www.example.com/wordpress),就无法获取到正确的链接。针对这个问题,用下边的代码就能解决问题了。
二、适用于网站有子目录
下面的这段代码可以解决上述问题:
$current_url = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
然而不幸的是,这段代码还是不完美:如果网站安装在子目录,同时又使用的默认含有 “?” 的固定连接(例如:http://www.example.com/wp/?p=4),就又无法正确获取链接了。针对这种情况可以使用下面的方法。
三、适用于网站有子目录并使用默认固定连接
为了解决上面的问题,再次把代码加以改进:
$current_url = add_query_arg( $GLOBALS['wp']->query_string, '', home_url( $GLOBALS['wp']->request ) );
四、代码封装
如果不只是自己使用,就可以把它封装起来,使代码的通用性更强。先把下边的代码放到主题的 functions.php 或者插件里:
function Bing_current_url() {
global $wp;
if ( '' == get_option( 'permalink_structure' ) ) {
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );
} else {
$current_url = home_url( add_query_arg( array(), $wp->request ) );
}
return $current_url;
}
然后就可以直接调用这个函数,获取当前页的链接了。
$current_url = Bing_current_url();
快来发表评论吧!