0

我正在尝试找到一种方法来防止在用户填写登录表单时出现登录屏幕错误。

所以,现在,我在自定义模板上打印了登录表单。但是,如果用户填写错误,它会将他们重定向到 wordpress 表单以重试。我想摆脱那个。

这是我的代码,但它不起作用。

add_action('login_form', 'redirect_invalid_login');

function redirect_invalid_login(){
    global $error;

    if($error)
        header('Location: '.get_bloginfo('url').'/client-login/?message=6');
}

现在 login_form 我相信为时已晚,因为东西已经打印到页面上。我一直没能找到一个有效的钩子。有这个钩子吗?或者也许是一种不同的方式来做到这一点?

4

2 回答 2

1

好的,所以这是解决方案:

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').'/client-login/?message=6');
    }
    else if($user->errors['empty_username']){
        wp_redirect(get_bloginfo('url').'/client-login/?message=7');
    }
    else if($user->errors['invalid_username']){
        wp_redirect(get_bloginfo('url').'/client-login/?message=8');
    }
    else if($user->errors['incorrect_password']){
        wp_redirect(get_bloginfo('url').'/client-login/?message=9');
    }
    else{
        wp_redirect(get_bloginfo('url').'/client-login');
    }

    exit;
}
于 2012-07-16T15:24:01.267 回答
0

你可以试试这个

add_action( 'wp_login_failed', 'redirect_invalid_login' );
function redirect_invalid_login() {
        wp_redirect(get_bloginfo('url').'/client-login/?message=6');
        exit;
}
于 2012-07-13T20:27:33.413 回答