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é?
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
}