web-dev-qa-db-fra.com

Comment obtenir des messages d'erreur de connexion sur un modèle personnalisé

Je souhaite afficher le formulaire de connexion et traiter la connexion sur la même page, afin qu'en cas d'erreur de connexion, les messages d'erreur apparaissant sur la même page.

J'ai ajouté cette fonction:

add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
function custom_authenticate_username_password( $user, $username, $password ) {
    if ( is_a($user, 'WP_User') ) { return $user; }

    if ( empty($username) || empty($password) )
    {
        $error = new WP_Error();
        $user  = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));

        return $error;
    }
}

Après avoir ajouté la fonction ci-dessus, comment puis-je réellement afficher le message d'erreur sur le modèle de page personnalisé?

2
jay

Une façon de recevoir le message d'erreur sur votre page de connexion personnalisée serait d'utiliser wp_login_failed hook. Cela pourrait ressembler à quelque chose comme ça:

add_action( 'wp_login_failed', 'my_login_fail' );  // hook failed login

function my_login_fail( $username ) {
    //redirect to custom login page and append login error flag
    wp_redirect(home_url( '?page_id=4' ) . "&login_error" );  
    exit;
}

Évidemment, vous devriez modifier wp_redirect en fonction des liens permanents que vous utilisez.

Ensuite, dans votre modèle de page personnalisé, vous pouvez vérifier l'indicateur login_error et afficher un message d'erreur:

if (isset($_GET['login_error'])){
    //print error message or do something else
}
1
IlmarsL