it-swarm.com.de

Wie kann ich einen Benutzer von Wordpress abmelden, bevor die Seite geladen wird?

Ich würde den folgenden Code verwenden, damit der Benutzer auf meiner WordPress-Site abgemeldet wird, wenn ?logout an das Ende der URL angehängt wird. Dies funktioniert gut - wenn der Benutzer eine Seite wie mysite.com/?logout oder mysite.com/test-page/?logout oder eine Seite besucht, auf der die Variable $_GET['logout'] festgelegt ist, wird er/sie abgemeldet.

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

Das Problem, mit dem ich konfrontiert bin, ist, dass die angezeigte Seite auch dann den angemeldeten Benutzer anzeigt, wenn ich diese Aktion zu plugins_loaded hinzufüge, der sich ganz oben in der Liste der Aktions-Hooks befindet Wird es bei einem nachfolgenden Ladevorgang aktualisiert, wird die "abgemeldete" Version der Seite angezeigt, jedoch nicht bei derselben Anforderung.

Schritte zum erneuten Erstellen des Problems:

  1. Füge diesen Code einem Plugin oder vielleicht deiner functions.php Datei hinzu. Ich habe es in einer Datei im Verzeichnis mu-plugins.
  2. Melden Sie sich bei Ihrer Wordpress-Site an.
  3. Besuchen Sie eine Seite oder einen Beitrag auf Ihrer Website, möglicherweise eine mit einem Kommentarfeld, und fügen Sie ?logout an die URL an
  4. Die Seite wird wie gewohnt geladen, das Kommentarfeld enthält Ihren Namen und zeigt an, dass Sie angemeldet sind und eine Antwort hinterlassen können
  5. Seite neu laden (mit oder ohne `? Login" an die URL angehängt)
  6. Die Seite ist jetzt abgemeldet

Gewünschtes Verhalten

Wenn Sie sich bei Wordpress angemeldet haben und eine Seite mit einem an die URL angehängten ?login besuchen, wird der Abmeldevorgang abgeschlossen und die Seite so angezeigt, als wären Sie beim Laden abgemeldet - ohne dass Sie sie aktualisieren müssen.

Ich glaube nicht, dass ich mich früher in Wordpress einbinden kann, und deshalb bin ich mir nicht sicher, wie ich das umgehen soll.

4
cwd

Dies sollte es tun:

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

Versuchen Sie stattdessen, entweder den Hook wp oder init zu verwenden.

0
Joseph Leedy