我正在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个页面上登录/注销,代码将按预期工作。也就是说,如果我访问该页面,然后登录,我将返回该页面。如果我注销该页面,我也会返回到该页面。
然而,当我在博客主页或博客帖子上登录时,我会(始终)看到博客中最老的帖子(在博客主页上显示最后一个帖子),我在博客中注销的页面也会出现同样的情况。我被带到最后一个岗位。
如果我在论坛索引页或论坛主题上,也会出现同样的问题。当我登录时,我(总是)被带到论坛索引底部的论坛。无论我从哪个论坛页面注销,都会出现同样的问题。
基本上,我只想让我的登录/退出功能正常。无论一个人登录到哪个页面,他们都会被带回该页面。
我已尝试停用所有插件,但问题仍然存在,因此与插件无关。
非常感谢任何人为解决此问题提供的任何帮助。
提前感谢您的帮助。
亲切的问候
最大值
SO网友:Andy Macaulay-Brook
get_permalink
将获取循环中当前帖子的URL。如果你在存档页面上调用它,那么WP认为“当前帖子”实际上是你要循环浏览的第一篇帖子,因此你最终得到的是该帖子的永久链接,而不是当前页面的URL。
我没有找到比这更好的方法,可以有效地从当前请求重建URL:
global $wp;
$current_url = home_url( add_query_arg( array(), $wp->request ) );
这样做,而不是捣乱
$_SERVER
, 我在各种在线帖子中都看到了这一点,至少可以确保您轻松获得规范的主机名&;你的协议是正确的。