登录重定向到上一页

时间:2012-10-03 作者:Tanya

我在上有一个自定义登录页http://netballscoop.com/log-in/

当您填写用户名和密码时,它会将您重定向到上一页。当您单击“注销”时,它会将您重定向到同一页面。所以这一切都很好。

如果您将用户名/密码留空或出现错误,将导致您登录wp。为了防止这种情况,我使用了以下代码https://stackoverflow.com/questions/11477107/redirect-away-from-login-page

add_action(\'login_redirect\', \'redirect_login\', 10, 3);
function redirect_login($redirect_to, $url, $user) {
if($user->errors[\'empty_password\']){
    wp_redirect(get_bloginfo(\'url\').\'/log-in-error/\');
}
else if($user->errors[\'empty_username\']){
    wp_redirect(get_bloginfo(\'url\').\'/log-in-error/\');
}
else if($user->errors[\'invalid_username\']){
    wp_redirect(get_bloginfo(\'url\').\'/log-in-error/\');
}
else if($user->errors[\'incorrect_password\']){
    wp_redirect(get_bloginfo(\'url\').\'/log-in-error/\');
}
else{
    wp_redirect(get_bloginfo(\'url\').\'/log-in\');
}
exit;
}
这对我的网站上的登录错误非常有效。但现在,登录重定向会将您带到http://netballscoop.com/members/testing (在BuddyPress成员的个人资料页面上进行用户“测试”)。

当用户登录时,如何将其重定向到上一页?

1 个回复
最合适的回答,由SO网友:Adam 整理而成

您可以筛选login_redirect 像这样工作,根据需要进行调整。

add_filter(\'login_redirect\', \'redirect_previous_page\', 10, 1);

function redirect_previous_page( $redirect_to ){
    global $user;

    $request = $_SERVER["HTTP_REFERER"];

    if ( in_array( $user->roles[0], array( \'administrator\') ) ) {

        return admin_url();

    } elseif ( in_array( $user->roles[0], array( \'subscriber\') ) ) {

        return $request;
    } 

    return $redirect_to;
}
更新1:代码(如上)已在上面进行了修改和测试-正常工作。

更新2:(Tanya)

与@userabuser聊天,得出了这个有效的答案。

// Redirect to previous page 
remove_all_filters(\'login_redirect\', 99);
add_filter(\'bbp_user_login_redirect_to\', \'function_name\');
重要提示:事实证明Tanya使用的是bbPress论坛插件,因此尽管最初的代码片段使用,

add_filter(\'login_redirect\', \'function_name\'); //the standard WordPress API filter
这是正确的,并且在"normal" WordPress条件,在这种情况下,被bbPress筛选器优先覆盖,

add_filter(\'bbp_user_login_redirect_to\', \'function_name\'); //the bbPress API filter
现在,由于bbPress.org 详细描述这些行为和挂钩的网站组织得很差,而且有些不完整(据我所知),我建议(任何人)寻求有关这些行为和挂钩的进一步信息what hooks wherewhat filters what, 应该看看this resource here 它提供了挂钩和过滤器的详细列表。

注:(其他)

更改\'subscriber\' 以匹配您用于该类型用户的角色。它还可以接受多个角色,因为它以数组的形式存在。

in_array( $user->roles[0], array( \'subscriber\', \'role2, role3\', \'etc\')

结束

相关推荐

当出现错误时,防止wp_login_form()重定向到wp-admin

我已经在我的网站前端使用wp_login_form(). 但是,当用户键入错误的用户名/密码时,他们会被重定向到wp admin登录表单。如何在登录表单上方显示任何错误消息?理想情况下,我不希望用户看到Wordpress管理部分。我试过使用redirect_invalid_login() 胡克,但这似乎不起作用?