web-dev-qa-db-fra.com

Comment déconnecter un utilisateur de Wordpress avant le chargement de la page?

J'utiliserais le code ci-dessous pour que, sur mon site wordpress, si ?logout soit ajouté à la fin de l'URL, l'utilisateur soit déconnecté. Cela fonctionne bien - si l'utilisateur visite une page telle que mysite.com/?logout ou mysite.com/test-page/?logout ou toute page où la variable $_GET['logout'] est définie, il sera déconnecté.

if( isset($_GET['logout']) ){
    add_action('plugins_loaded', 'wp_logout',0);            
}

Le problème auquel je suis confronté est que même si j'ajoute cette action à plugins_loaded, qui se trouve tout en haut de la liste des crochets d'action , la page qui s'affiche indiquera toujours l'utilisateur connecté. est actualisé lors d'un chargement ultérieur, il affichera la version "déconnectée" de la page, mais pas sur la même demande.

Étapes pour recréer le problème:

  1. Ajoutez ce code à un plugin ou peut-être à votre fichier functions.php. Je l'ai dans un fichier dans le répertoire mu-plugins.
  2. Connectez-vous à votre site Wordpress.
  3. Visitez une page ou publiez sur votre site, éventuellement avec une boîte de commentaires, et ajoutez ?logout à l'URL.
  4. La page se chargera normalement, la boîte de commentaires portera votre nom et indiquera que vous êtes connecté et pouvez laisser une réponse.
  5. Recharger la page (avec ou sans `? Login" ajouté à l'URL)
  6. La page est maintenant déconnectée

Comportement souhaité

Une fois que vous êtes connecté à Wordpress, visiter une page avec ?login ajouté à l'URL termine le processus de déconnexion et affiche la page comme si vous étiez déconnecté lors de son chargement - sans avoir à l'actualiser.

Je ne pense pas pouvoir me connecter à Wordpress plus tôt et je ne sais donc pas comment résoudre ce problème.

4
cwd

Cela devrait le faire:

add_action('plugins_loaded', function(){
    wp_set_current_user(0);
},0);
7
Steve Brown

Essayez plutôt d'utiliser le hook wp ou init.

0
Joseph Leedy