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 に答える