J'ai un site où les clients peuvent s'inscrire eux-mêmes (ils ont un rôle d'utilisateur "en attente"). Cependant, ce que je veux, c'est qu'après cet enregistrement, ces rôles d'utilisateur ne puissent plus se connecter ou se déconnecter automatiquement. Ils ne doivent pas non plus pouvoir se connecter. La connexion doit donc être refusée pour ce rôle d'utilisateur.
Ce que vous voulez faire, c'est accrocher le crochet authenticate
, vérifier si l'utilisateur a le rôle pending
et, le cas échéant, renvoyer une erreur.
//* Add filter to the authenticate hook
add_filter( 'authenticate', 'wpse_263762_authenticate', 20, 3 );
function wpse_263762_authenticate( $user, $username, $password ) {
//* Check if the user has the pending role
if( ! is_wp_error( $user ) && in_array( 'pending', $user->roles ) ) {
//* Throw an error
$error = new WP_Error();
$errorMessage = __( 'Your error message goes here.' );
$error->add( 401, $errorMessage );
return $error;
}
//* Or return the user
return $user;
}