WordPress中获取当前页面URL

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

     在WordPress主题和插件的开发过程中,经常需要获取当前页面的URL,之前我也写了个教程,讲解如何使用PHP获取当前页面的URL,不过使用php编写代码受网站环境影响较大,代码过多。我就在想,能不能使用WordPress原生的函数来实现这个功能呢?不曾想还真找到了方法,你可以直接使用以下代码来获取当前页面的URL:

$current_url = home_url(add_query_arg(array()));

子目录WP的方法

     不过可惜的是,如果你的WordPress安装在子目录下,且站点地址也使用子目录(如:www.example.com/wp),那么以上代码就没法正常工作了。以下是针对此缺陷的修正代码,适用范围更加普遍:

global $wp;
$current_url = home_url(add_query_arg(array(),$wp->request));

默认固定链接

     如果你的WordPress使用的默认的链接,安装在子目录,站点地址也使用子目录,同时又是使用带 ? 的默认链接,如www.example.com/wp/?p=4,你可以使用以下代码来获取当前页面URL:

global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

使用说明

     1、如果你的WordPress使用的不是默认的固定链接,首页是www.example.com这种形式,推荐使用第一部分的代码;
     2、如果你的WordPress使用的不是默认的固定链接,首页是www.example.com/wp这种子目录形式,推荐使用第二部分的代码;
     3、如果你的WordPress使用的是默认的固定链接,首页是www.example.com,文章是www.example.com/?p=4这种形式,推荐使用第一部分的代码;
     4、如果你的WordPress使用的是默认的固定链接,首页是www.example.com/wp,文章是www.example.com/wp/?p=4这种子目录形式,推荐使用第三部分的代码;

参考文章

https://www.ludou.org/get_current_page_url.html
http://www.stephenharris.info/2012/how-to-get-the-current-url-in-wordpress/

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/how-to-get-the-current-url-in-wordpress.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

24 条留言

点此留言
  1. xiaomingtt xiaomingtt

    学习一下

  2. 云淡然

    这个可以有~简单很多了~

  3. SK-BLOG SK-BLOG

    来学习了….

  4. 站长你好

    站长你好。
    你开发的垃圾评论过滤插件,是我用的WP插件里效果最好的、最有效的,解决了数年来的英文垃圾狂轰滥炸,每天博客都有几千的英文垃圾群发跟贴,用上你的插件,立即就没了,效果是立竿见影。
    但是这几天,新情况出现了,出现了很多日文的垃圾跟贴,一天也是几百上千。能不能根据新情况,设计屏蔽日文的插件呢,供您思考。感谢,叩首!

    • Ludou

      @站长你好 中文和日文有很多相似的地方,完全分辨中文和日文比较复杂。
      给你的提供的方法,一、如果是单纯一个IP,就禁止这个IP访问;2、使用 小墙 插件;3、使用AJAX的评论方式;4、使用多说等第三方评论插件

  5. 南寻 南寻

    学习咯~

  6. oyoy oyoy

    学习,记录起来备用

  7. ilikecss ilikecss

    我只想要如何获取用户浏览记录。。。

  8. 哼哼猪 哼哼猪

    来学习一下

  9. 电脑爱好者 电脑爱好者

    我的好像是第二种…

  10. Era Era

    大神你好!
    请教你一个问题。在制作WordPress主题的时候遇到这样一个问题,一个父分类下面好几个子分类,我想实现同一个父分类下不同子分类之间的文章可以实现连续翻页.
    我现在的代码是这样子的.
    <?php previous_post_link('%link','上一章', TRUE) ?>
    <?php next_post_link('%link','下一章',TRUE) ?>
    这两个实现翻页的代码是放置在single.php里面.
    这样的代码,可以实现单个子分类下的文章翻页,当到单个子分类最后一篇文章的时候,不能翻页到 同一个父分类下另外一个子分类的第一篇文章.
    不知道大神有好的解决办法没有? 谢谢!

    • Ludou

      @Era 请同时勾选父分类和子分类

      • Era Era

        @Ludou 你好!
        代码是在single.php里面 没有法进行勾选吧?

        • Ludou

          @Era 文章编辑页(点击文章-写文章那个页面)的分类目录
          先自己试过再发表评论,谢谢!

  11. 胡倡萌 胡倡萌

    经过测试,二级域名下,两种代码返回的都是首页URL,不能获取当前URL

  12. 胡倡萌 胡倡萌

    纠正一下,第二种方法即使在二级域名下,也可以获取当前链接,但是要在前面添加 全局变量 global $wp;

    希望补充提示下

    • Ludou

      @胡倡萌 感谢提醒。代码已修改。

      • 胡倡萌 胡倡萌

        @Ludou 再次发现个问题,貌似如果固定连接设置为默认的带?的那种,这种方法也是无法正确获取的。希望老大也测试下,看看是否真如此

  13. 否子戈 否子戈

    最后的总结中似乎1、3可以合并为:如果首页根目录形式,不管固定链接格式,都选择第一种代码。
    根据这个文章的思路,写一个函数如下:

    function wp_current_request_url(){
    global $wp;
    $home_root = strpos(home_url(),'/') === false ? true : false;
    $permalink = trim(get_option('permalink_structure')) != '' ? true : false;
    if($home_root){
    return home_url(add_query_arg(array()));
    }
    if(!$home_root && $permalink){
    return home_url(add_query_arg(array(),$wp->request));
    }
    if(!$home_root && !$permalink){
    return add_query_arg($wp->query_string,'',home_url($wp->request));
    }
    }
    尚没有测试,不知是否可行

  14. Lar Lar

    第一种在首页会输出http://example.com/xmlrpc.php

  15. abu

    老大,我的博客是纯图片主题,文章进行了分页,每页一张图,有没有办法点击图片跳到下一页?

  16. 龙笑天 龙笑天

    能否获取页面的完整链接 包括锚点,及其它参数~

发表留言