web-dev-qa-db-fra.com

arrêter la connexion si user_status est égal à zéro

j'essaie de créer un plugin d'utilisateurs d'approbation simple pour annuler ou approuver un nouvel utilisateur. J'ai donc utilisé user_status par défaut pour le faire. Ce que je demande, comment puis-je arrêter le formulaire de connexion pour enregistrer la session et ajouter un message d'erreur si user_status = 0 , quelque chose comme ca

if($user_status == '0'){
   //stop login sessiong
   echo $error_msg.'waiting for approval';
}else{
  //run session
}

y'a-t'il un quelconque moyen d'y arriver

1
Mouner Mostafa

Le champ user_status n'est pas utilisé par le noyau, vous pouvez donc l'utiliser à vos propres fins. Bien qu'il puisse y avoir des effets secondaires si WP décide de le réutiliser ultérieurement.

Le filtre authenticate se déclenche avant l'authentification de l'utilisateur. Vous pouvez vous connecter à ce filtre et renvoyer un objet WP_Error pour empêcher l'utilisateur de se connecter.

function wpse_293904_authenticate( $user, $username, $password ) {
  $user_status = get_custom_user_status_from_username( $username );
  if( ! $user_status ) {
    $error = new WP_Error();
    $error->add( 403, 'Oops. Some error message.' );
    return $error;
  }
  return $user;
}
add_filter( 'authenticate', 'wpse_293904_authenticate', 20, 3 );
3
Nathan Johnson