WordPress: Login-Zustand des Users anzeigen

Derzeit beschäftige ich mich viel mit dem Thema Mitgliederbereiche bei WordPress. Dafür gibt es ja bekannte große Plugins mit eigenen Erweiterungen, aber manchmal braucht man ja nur ein kurzes Login bzw. Logout hier und da.

Problembeschreibung: Eine WordPress-Seite mit einem einfachen Communitybereich der über Berechtigungen von Benutzergruppen herum gebaut wurde, brauchte nicht nur eine eigene Anmeldeseite, sondern auch einen dauerhaften Link im Header. Sinnigerweise sollte dieser „Login“ heißen, aber dummerweise heißt er auch dann noch „Login“ wenn ein User angemeldet war.

Lösung: Eine If-Abfrage, die anhand des Anmeldestatus einen individuellen Text ausgibt.

Der Lösungsweg: Natürlich hält WordPress auch hier schon eine integrierte Funktion bereit, die den Anmeldestatus des Users abfragt: is_user_logged_in() Da es sich dabei verständlicherweise um keine Themefunction handelt, befindet sie sich nicht in der jeweiligen PHP-Datei, sondern man findet sie in wp-includes/pulggable.php:


function is_user_logged_in() {
    $user = wp_get_current_user();
 
    return $user->exists();
}

Die Funktion gibt ein true für den Fall aus, dass er User angemeldet ist bzw. ein false, falls das eben nicht der Fall ist. Genutzt wird sie von WordPress selbst für rund 30 verschiedene Zwecke, aber man kann sie wie gesagt auch in unserem Fall nutzen. Dazu benötigt es nur ein PHP-Script:


<?php if ( is_user_logged_in() ) { ?>
    <a href="linkzurlogoutseite.html">Logout</a>
<?php } else { ?>
    <a href="linkzurloginseite.html">Login</a>
<?php } ?>

Ist die Funktion is_user_logged_in() wahr, wird dem eingeloggten User ein „Logout“ angezeigt, allen nicht eingeloggten Usern das „Login“.

Protipp: In diesem Fall wurde eine individuelle Loginseite verwendet, man kann aber natürlich auch statt der individuellen URLs /wp-login.php als Link zur WordPress-Anmeldeseite verwenden und die Funktion <?php echo wp_logout_url(); ?> um den User auszuloggen.