J'ai choisi d'afficher un formulaire de connexion sur la première page de mon site web wordpress. Si l'utilisateur se connecte avec succès, il est redirigé vers une page Web spécifique. S'il entre un mot de passe incorrect, il est à nouveau redirigé vers la page de connexion. Le problème survient lorsque quelqu'un n'entre pas le nom d'utilisateur et le mot de passe: il est redirigé vers la page de connexion de wordpress admin.
Comment puis-je rediriger les noms d'utilisateur vides vers la page de connexion principale?
c'est le code que j'utilise pour rediriger les tentatives infructueuses:
add_filter('login_redirect', '_catch_login_error', 10, 3);
function _catch_login_error($redir1, $redir2, $wperr_user)
{
if(!is_wp_error($wperr_user) || !$wperr_user->get_error_code()) return $redir1;
switch($wperr_user->get_error_code())
{
case 'incorrect_password':
case 'empty_password':
case 'invalid_username':
default:
wp_redirect(home_url()); // modify this as you wish
}
return $redir1;
}
Recherchez une connexion utilisateur vide dans le tableau $_REQUEST
:
if ( empty( $_REQUEST['user_login'] ) // && or || empty( $_REQUEST['user_pass'] )
return $redirect_to_whereever_you_want;
Mais ce filtre est trop tard. Il s'appelleaprèsl'utilisateur est connecté. Vous devez utiliser l'action 'wp_authenticate'
. Il s'agit de l'une des actions les plus anciennes du processus de connexion:
add_action( 'wp_authenticate', '_catch_empty_user', 1, 2 );
function _catch_empty_user( $username, $pwd ) {
if ( empty( $username ) ) {
wp_safe_redirect( $redirect_to_whereever_you_want );
exit();
}
}