在Wordpress中登录后,将用户重定向到他们尝试访问的页面

时间:2015-05-12 04:12:29

标签: php wordpress redirect

我有一个仅限登录用户的页面(比如说它被称为' / authed-page')。当未经过身份验证的用户访问此页面时,系统会提示他们单击按钮进行登录,然后将其转到登录URL:' / login'

现在他们登录后我希望他们被重定向到他们试图访问的页面,&#39; / authed-url&#39;,但我无法弄清楚如何做到这一点!< / p>

我尝试的事情:

1)在我的functions.php文件中声明一个函数redirect_to_authed_url

function redirect_to_authed_url( $redirect_to, $request, $user ) {
    return "/post-a-job";
}

然后在authed-url.php的模板中,当我检测到用户没有登录时,我这样做:

<?php add_filter( 'login_redirect', 'redirect_to_authed_url', 10, 3 ); ?>

然而,我认为这不起作用,因为用户按下一个按钮,生成另一个http请求,将其发送到&#39; / login&#39; url表示重定向过滤器丢失。

2)当有人访问&#39; / authed-url&#39;时设置cookie。并且他们没有登录名为“redirect_url&#39;”。然后我在我的主题的functions.php文件

中声明了这一点
function redirect_request( $redirect_to, $request, $user ) {
    if (isset($_COOKIE['login_redirect']) && strpos($_COOKIE['login_redirect'], 'http') === false) {
        $redirect_url = $_COOKIE['login_redirect'];
        unset $_COOKIE['login_redirect'];
        return $redirect_url;
    } else {
        return('/');
    }
}

这似乎不起作用,因为我无法弄清楚设置cookie的位置。我一直收到警告:

WARNING: CANNOT MODIFY HEADER INFORMATION - HEADERS ALREADY SENT

我觉得我必须遗漏一些明显的东西。这应该是一个非常普遍的要求吗?有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以将URL编码的redirect_to变量附加到登录URL,以使其在登录后重定向。

例如:

http://www.example.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.example.com%2Fauthed-url

登录后,该URL会将您重定向到/ authed-url。

答案 1 :(得分:-1)

您可以尝试使用此功能来检查用户是否记录日志。

<?php
   if( is_user_logged_in() ) {
      echo 'your function for logging user';
   }else{
      echo 'your function for not logging user';
   }
?>