Nur eine eingeloggte Sitzung für WordPress-Benutzer zulassen
WordPress erlaubt standardmäßig mehrere gleichzeitige eingeloggte Sitzungen pro Benutzer. Das heisst du kannst dich bei unbegrenzt vielen Geräten gleichzeitig anmelden. Das ist aber nicht immer gewünscht und WordPress bietet keine Möglichkeit die Anzahl der gleichzeitigen Sitzungen anzuzeigen bzw. mit einem Wert festzulegen. Wenn man keinen Zugang zum WordPress Backend hat, kann man andere Sitzungen nicht abmelden.
So kannst du alle Sessions in WordPress beenden
Es gibt zum einen die Möglichkeit über das WordPress Backend alle Sessions zu beenden. In der Bearbeitungsseite des Profils kann man auf den Button „Überall sonst abmelden“ drücken. Wichtig, wenn man beispielsweise vergessen hat sich in einem Internetcafé auszuloggen. Jedoch will man den Kunden seiner Seite nicht immer den WP-Backend Zugang erlauben. Das heisst es muss eine andere Möglichkeit her.
Keine Produkte gefunden.
Nur eine Sitzung für WordPress-Benutzer zulassen – Alle anderen Sessions mit einer function beenden
Der folgende Code-Schnipsel „zerstört“ beim neuem einloggen automatisch alle anderen Sessions von Benutzern, die mit der gleichen user_id eingeloggt sind. Somit kann nur ein Benutzer gleichzeitig bei WordPress eingeloggt sein.
function destroy_all_sessions() {
$session_token = wp_get_session_token();
if ( isset( $session_token) && strlen( $session_token ) ) {
$sessions = WP_Session_Tokens::get_instance( get_current_user_id() );
$sessions->destroy_others( $session_token );
}
}
add_action('init', 'destroy_all_sessions');
Die Benutzer müssen nicht mehr auf die Schaltfläche „Überall anders abmelden“ klicken, denn die Funktion macht dies automatisch für den Besucher im Hintergrund. Du musst die Funktion nur in die functions.php deines Themes hinterlegen.
Keine Produkte gefunden.
Sollte es nicht
$sessions->destroy_others($session_token);
heißen? Denn eine Variable $token ist in dem Codefragment nirgendwo deklariert.
Hey Adrian,
absolut richtig 😉 Ich ändere es sofort. Bienchen.
LG Oli