我有一个仅限登录用户的页面(比如说它被称为' / 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
我觉得我必须遗漏一些明显的东西。这应该是一个非常普遍的要求吗?有什么想法吗?
答案 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';
}
?>