获取固定链接未获取正确的页面(_P)

时间:2016-08-12 作者:khunmax

我正在Xampp本地开发一个WP站点。

我使用以下代码将样式化的登录/退出按钮添加到侧栏:

 add_shortcode( \'my_login\', \'my_login\' );
    function my_login() {
    if ( is_user_logged_in() ) 
    return \'<a href="\'.wp_logout_url( get_permalink() ).\'" title="Logout"   class="button login">LOG OUT</a>\';
                     else 
                        return \'<a href="\'.wp_login_url( get_permalink() ).\'" title="Login" class="button login">LOG IN</a>\';
                    }
我的网站有6个页面链接到主导航。一个是博客,另一个是bbpress论坛。如果我在其中的4个页面上登录/注销,代码将按预期工作。也就是说,如果我访问该页面,然后登录,我将返回该页面。如果我注销该页面,我也会返回到该页面。

然而,当我在博客主页或博客帖子上登录时,我会(始终)看到博客中最老的帖子(在博客主页上显示最后一个帖子),我在博客中注销的页面也会出现同样的情况。我被带到最后一个岗位。

如果我在论坛索引页或论坛主题上,也会出现同样的问题。当我登录时,我(总是)被带到论坛索引底部的论坛。无论我从哪个论坛页面注销,都会出现同样的问题。

基本上,我只想让我的登录/退出功能正常。无论一个人登录到哪个页面,他们都会被带回该页面。

我已尝试停用所有插件,但问题仍然存在,因此与插件无关。

非常感谢任何人为解决此问题提供的任何帮助。

提前感谢您的帮助。

亲切的问候

最大值

1 个回复
SO网友:Andy Macaulay-Brook

get_permalink 将获取循环中当前帖子的URL。如果你在存档页面上调用它,那么WP认为“当前帖子”实际上是你要循环浏览的第一篇帖子,因此你最终得到的是该帖子的永久链接,而不是当前页面的URL。

我没有找到比这更好的方法,可以有效地从当前请求重建URL:

global $wp;
$current_url = home_url( add_query_arg( array(), $wp->request ) );
这样做,而不是捣乱$_SERVER, 我在各种在线帖子中都看到了这一点,至少可以确保您轻松获得规范的主机名&;你的协议是正确的。