获取当前页面URL(包括分页)

时间:2013-01-31 作者:René Schubert

是否有WP功能可以自动获取当前页面的正确URL?这意味着如果我只打开一篇帖子,函数返回的结果与get_permalink(), 但是,如果我在页面的分页实例上(在通过注释分页时),该函数返回的结果与get_pagenum_link(get_query_var(\'paged\')) 可以。

我已经搜索了抄本,但没有找到我要找的东西。(但即便如此get_pagenum_link() 没有记录。)

我知道this function 已经有了,但如果有一个;“本地”;执行此任务的WP函数。

8 个回复
最合适的回答,由SO网友:David 整理而成

除了Rajeev Vyas的答案之外,您不需要将任何非空参数传递给add_query_arg(). 以下几点对我一直都很有效:

// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );

// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
该函数依赖于$_SERVER[ \'REQUEST_URI\' ] 并应用urlencode_deep() 对它。看见https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673

Edit:$_SERVER[ \'REQUEST_URI\' ] 表示未过滤的用户输入,应始终转义add_query_arg() 当上下文更改时。例如,使用esc_url_raw() 用于DB使用或esc_attr()esc_url() 用于HTML。

Update

所示的示例应该创建一个绝对URI(包含scheme和host),但在子目录为home_url() 将返回包含路径段的完整URI。多站点感知代码的更好解决方案是:

// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts[\'scheme\']}://{$parts[\'host\']}" . add_query_arg( NULL, NULL );
WordPress core不支持多站点站点URL中的端口、用户或密码,因此这应该足够了。

SO网友:Rajeev Vyas

global $wp;
$current_url = add_query_arg( $wp->query_string, \'\', home_url( $wp->request ) );
不是函数,但明确使用wordpress代码。。

http://kovshenin.com/2012/current-url-in-wordpress/

SO网友:Foxsk8

(1)$_SERVER[\'REQUEST_URI\'] - 它返回URL以访问正在执行脚本的页面。如果需要键入http://www.example.com/product.php?id=5 然后访问页面$_SERVER[\'REQUEST_URI\'] 退货/product.php?id=5.

(2)$_SERVER[\'DOCUMENT_ROOT\'] – 返回在服务器的配置文件中指定的服务器的根目录。此变量通常返回如下路径/usr/yoursite/www 在Linux和D:/xamps/xampp/htdocs 在windows中。

(3)$_SERVER[\'HTTP_HOST\'] – 返回http标头中的主机名。此变量通常返回如下路径example.com 当您发现http://example.com 在浏览器的地址栏中并返回www.example.com 当你看到http://www.example.com 在地址栏中。当您必须在使用PHP进行在线支付时保留会话时,这非常有用,因为会话存储为http://example.comhttp://www.example.com.

(4)$_SERVER[\'HTTP_USER_AGENT\'] - 返回访问网页的用户代理(浏览器)详细信息。我们可以使用strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”) 要检测Microsoft Internet explorer,或者您可以使用strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”) 在PHP中检测firefox浏览器。

(5)$_SERVER[\'PHP_SELF\'] - 返回当前正在执行的脚本的文件名。假设您正在访问URLhttp://www.example.com/product.php?id=5 然后$_SERVER[\'PHP_SELF\'] 退货/product.php 在脚本中。

(6)$_SERVER[\'QUERY_STRING\'] – 如果使用查询字符串访问当前正在执行的脚本,则返回查询字符串。查询字符串是在“”之后可用的字符串签名如果您使用$_SERVER[\'QUERY_STRING\'] 在执行以下URL的脚本中http://www.example.com/index.php?id=5&page=product 然后它返回id=5&page=product 在脚本中。

(7)$_SERVER[\'REMOTE_ADDR\'] – 返回访问当前页面的远程计算机的IP地址。但你不能依赖$_SERVER[\'REMOTE_ADDR\'] 获取客户端计算机的真实IP地址。请参阅本文,了解如何在PHP中获取真正的IP地址。

8)$_SERVER[\'SCRIPT_FILENAME\'] - 返回当前正在执行的文件的绝对路径。它返回的路径类似var/example.com/www/product.php 在Linux和类路径中D:/xampp/xampp/htdocs/test/example.php 在windows中。

SO网友:Whizark

add_query_args( null, null ) will create an array element with empty key ($qs[""] = null) 虽然这不会影响结果。

  • functions.php in tags/4.6/src/wp-includes – WordPress Tracadd_query_arg() | Function | WordPress Developer Resources, 第2、3个参数是可选的,可以省略。

    add_query_args( null, null ) 可以是more shorter.

    $current_url = add_query_args( [] );
    
    还有the shortest version 虽然不建议使用,因为第一个参数是必需的参数。

    $current_url = add_query_args();
    
    此外,请注意home_url( add_query_vars( [] ) )home_url( add_query_arg( null, null ) ) might not return actual URL 当WordPress安装在子目录中时。

    e、 g。https://example.com/wp/wp/foo 可能在中安装WordPress时返回https://example.com/wp/.

    <小时>

    Update: 2017/01/23

    我的版本基于David的解决方案来获取绝对URL。

    $parts = parse_url(home_url());
    $uri   = $parts[\'scheme\'] . \'://\' . $parts[\'host\'];
    
    if (array_key_exists(\'port\', $parts)) {
        $uri .= \':\' . $parts[\'port\'];
    }
    
    $uri .= add_query_arg([]);
    

SO网友:Henning Fischer

对我来说<?php esc_url(the_permalink()); ?> 工作(在带有分页的存档页上)。

SO网友:vaibhav

我现在不需要分页,但您可以使用此函数在循环中获取url

<?php $ID = get_the_ID(); 
echo get_permalink( $ID ); ?>
或者,如果您不喜欢使用php,也可以在这里选择jquery方法(这将帮助您在循环之外工作)

$(document).ready(function () {
var vhref = $(location).attr(\'href\');
var vTitle = $(this).attr(\'title\');
$(\'#spnTitle\').html(\'\' + vTitle + \'\');
$(\'#spnURL\').html(\'\' + vhref + \'\');
});​
或者,如果您喜欢使用php函数,则需要在循环外部获取id

SO网友:Jesse

wp_guess_url 就是你要找的。

猜测网站的URL。

将删除wp admin链接以仅检索不在wp admin目录中的返回URL。

SO网友:Vivek Pandey

您可以使用wordpress函数获取当前页面URL

the_permalink()
这将返回当前页面URL链接。

结束

相关推荐

permalinks issue and archives

我对运行在WP 3.3上的一个站点有一个问题,当我们通过“/%post\\u id%/%postname%/”使永久链接成为任何内容时,归档页面会断开并变成404。经过一些研究,我明白了为什么从性能的角度来看,这不是一个好的做法,所以我尝试了建议的备选方案:“/%year%/%postname%/”和“/%post\\u id%/%postname%/”这两个建议都有效,只是只有使用post\\u id的建议,归档URL才会变成“/date/2012/11/”,并被找到。根据permalink的任何其他建