首页 > 分类 > 网络百科 > 文章内容

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();

原文链接:WordPress 获取当前页链接 | EndSkin

您可能还会对这些文章感兴趣
快来发表评论吧!
发表评论

您的电子邮箱地址不会被公开。必填项已用 * 标注

你好,新朋友!

emojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemoji