SYS 棚户区
当前位置:首页 > 分类 > 网络百科 > 文章内容

在 WordPress 开发中,经常需要获取当前页面的链接。WordPress 本身并没有提供相关的函数,对于不同的页面类型,只能使用不同的函数获取当前页面的链接。我们可以使用 PHP 原生的全局数组变量 $_SERVER['REQUEST_URI'] 来实现,但 WordPress 网站的伪静态比较特殊,受环境影响严重,而且代码过多、容易出错,不利于扩展和管理。下文介绍如何使用 WordPress 的原生的函数来实现这一功能。

一、适用于网站无子目录

用 WordPress 的原生代码获取是比较明智的选择,下边的代码可以实现用原生函数获取当前页 URL。

<?php
$current_url = home_url( add_query_arg( array() ) );
?>

这段代码适用于绝大多数的 WordPress,但它还是有缺陷的。当 WordPress 安装在子目录时(例如:http://www.example.com/wordpress),就无法获取到正确的链接。针对这个问题,用下边的代码就能解决问题了。

二、适用于网站有子目录

下面的这段代码可以解决上述问题:

<?php
$current_url = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
?>

然而不幸的是,这段代码还是不完美:如果网站安装在子目录,同时又使用的默认含有 “?” 的固定连接(例如:http://www.example.com/wp/?p=4),就又无法正确获取链接了。针对这种情况可以使用下面的方法。

三、适用于网站有子目录并使用默认固定连接

为了解决上面的问题,再次把代码加以改进:

<?php
$current_url = add_query_arg( $GLOBALS['wp']->query_string, '', home_url( $GLOBALS['wp']->request ) );
?>
四、代码封装

如果不只是自己使用,就可以把它封装起来,使代码的通用性更强。先把下边的代码放到主题的 functions.php 或者插件里:

<?php
function Bing_current_url() {
	global $wp;
	return get_option( 'permalink_structure' ) == '' ? add_query_arg( $wp->query_string, '', home_url( $wp->request ) ) : home_url( add_query_arg( array(), $wp->request ) );
}
?>

然后就可以直接调用这个函数,获取当前页的链接了。

<?php
$current_url = Bing_current_url();
?>

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

文章标签
本页链接:https://www.syshut.com/wordpress-get-current-url.html
版权声明:除特殊注明均为原创文章,转载请保留出处!

微信扫一扫,打赏作者吧~

支付宝扫一扫,打赏作者吧~

快来发表评论吧!

发表评论

快捷键:Ctrl + Enter