J'ai créé un formulaire de connexion dans l'interface avec wp_login_form()
. Dans mon functions.php file, j'ai ajouté une action pour empêcher la redirection vers /wp-login.php si la connexion a échoué avec
add_action ('wp_login_failed',….
Comme il s'avère que l'action ne s'accroche que si les champs username et password sont remplis. Si l'un d'entre eux est laissé vide, je suis toujours redirigé vers wp-login.php.
Est-il possible de vérifier si les deux champs sont remplis pour empêcher la redirection?
Merci
Julien
Ajoutez ce filtre pour modifier la manière dont le nom d'utilisateur/mot de passe vide est traité:
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;
}
}
Et ensuite, votre redirection d'origine sur wp_login_failed fonctionnera également avec un nom d'utilisateur/mot de passe vide.
Le problème réside dans la fonction wp_authenticate()
(trouvée dans le fichier pluggable.php
)
Vous avez 2 options.
wp_authenticate()
(il s’agit simplement de supprimer quelques caractères dans une instruction if ).