Wordpress-从登录页面成功登录后,将用户重定向到上一页

时间:2019-09-23 15:20:26

标签: php wordpress redirect

我有一个wordpress内联网网站。您必须先登录才能访问任何页面,否则您将被重定向到登录页面:mywebsite.com/login

如果您的菜单中有一个登录表单,那么我找到的所有代码都可以使用,但是如果必须更改页面,则不会。其他答案是面向woocommerce的,不合适。

我想要的是:用户浏览了一个无法访问的页面:mywebsite.com/this-cat/this-page。 他已重定向到mywebsite.com/login。成功登录后,他将重定向到他的第一个请求:mywebsite.com/this-cat/this-page

目前,仅将用户重定向到首页。

我认为也许可以过滤重定向,将页面的标签放入查询参数中,然后在登录后过滤重定向以重定向到查询参数中的标签

但是,老实说,我不知道要使用哪个过滤器,..

1 个答案:

答案 0 :(得分:0)

感谢Stefano的评论,这就是我解决问题的方法。起初我不明白他的意思,但终于明白了。

add_action( 'wp', 'redirect_non_logged_users_to_specific_page' );
function redirect_non_logged_users_to_specific_page() {

    if ( !is_user_logged_in() && !is_page('resetpass') && !is_page('lostpassword') && !is_page('login')) {
        global $wp;
        wp_redirect( '/login/?redirect_to='.home_url($wp->request ));
        exit;
    }
}

我记得我在代码中使用了一个函数来重定向未登录的用户。目前,我了解了何时以及如何保存要重定向的URL。

那时,我最大的担忧是,要知道成功登录后如何正确重定向用户。我尝试了许多代码,但是都无法正常工作。然后,我想起了Stefano的评论,并且理解了如何进行。在登录URL中添加redirect_to查询参数会使Wordpress将您重定向到该URL。

  • $wp->request返回页面的路径,例如: /a-category/my-page
  • home_url()函数有助于构建此页面的完整URL,例如: https://my-website.com/a-category/my-page