WordPress Login-Sessions sind in der Regel für 48 Stunden bzw. 14 Tage gültig. Die 48 Stunden gelten für Logins ohne die Auswahl der Checkbox „Angemeldet bleiben“, die 14 Tage mit der Auswahl der Checkbox. Mit ein paar Zeilen Code kann man die Session-Dauer nach belieben anpassen.

WordPress Session-Dauer anpassen

Um die Session-Dauer anzupassen, kann man z.B. via functions.php des Themes die Session-Dauer über den Filter auth_cookie_expiration ändern. Das können wir mit folgendem Code erreichen:

add_filter('auth_cookie_expiration', 'login_session_expiration', 99, 3);

function login_session_expiration($seconds, $user_id, $remember){

    // Für Option "Eingeloggt bleiben"
    if ( $remember ) {

        $expiration = 6*60*60; // 6 Stunden
    } else {
        // Ohne "Eingeloggt bleiben"
        $expiration = 6*60*60; // 6 Stunden
    }

    return $expiration;
}

Beachten sollte man, dass wir in unserer Funktion den „Eingeloggt bleiben“-Wert über die Variable $remember auslesen. Die Variable $expiration erhält als Wert einen Integer mit einer Sekundenangabe. In unserem Beispiel 6 Stunden (6 Stunden mal 60 Minuten mal 60 Sekunden).

Mmit dieser Lösung wird jedoch ein Hard-Logout erzeugt –  das heißt egal ob man aktiv oder inaktiv ist, nach 6 Stunden (für unser Beispiel) wird die Session ungültig und man muss sich erneut einloggen. Mit ein paar weiteren Zeilen Code kann man jedoch einen Session-Refresh nach jedem Seitenaufruf erzeugen:

add_action('init', 'renew_wp_cookie');

function renew_wp_cookie() {

		// Damit man sich ausloggen kann
		if(in_array($GLOBALS['pagenow'], array('wp-login.php'))) return;

    if (is_user_logged_in()) {
        $current_logged_user = get_current_user_id();
        wp_set_auth_cookie($current_logged_user, true);
    }

}

Nun ist sichergestellt, dass man nicht mitten bei der Arbeit im Backend einfach rausgeworfen wird. Man könnte durch einige Anpassungen des Codes auch die Session-Dauer pro User oder Userrolle ändern, sodass z.B. Administratoren länger eingeloggt bleiben dürfen als Redakteure oder die Session-Dauer für User X 24 beträgt . Diese Anpassungen würden wir in der Funktion login_session_expiration vornehmen.

Falls Sie Hilfe bei Ihrem WordPress-Projekt benötigen können Sie uns via Kontaktformular erreichen.