it-swarm.com.de

Einen Benutzer für ein Jahr angemeldet lassen?

Das muss einfach sein: Wie kann ich einen Benutzer - my-user - für ein Jahr angemeldet lassen? (Ich überprüfe eingeloggte Cookies in der Dev Tools-Konsole).

Update 16.08.15

Das funktioniert:

add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year', 10, 3 );

function keep_me_logged_in_for_1_year( $ttl, $user_id, $remember ) {
    if( 1 === $user_id )
        $ttl = YEAR_IN_SECONDS;
   return $ttl;
}

Und mit der Array-Option funktioniert dies für mehrere Benutzer:

add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year', 10, 3 );

function keep_me_logged_in_for_1_year( $ttl, $user_id, $remember ) {
    if( in_array( $user_id, array( 1, 2 ) ) )
        $ttl = YEAR_IN_SECONDS;
   return $ttl;
}

Update 8/12/15: Re: Rarsts Antwort unten: Da get_currentuserinfo steckbar ist, wie würde ich apply_filters in diesem Zusammenhang verwenden?

Ich erhalte einen Call to undefined function get_currentuserinfo()-Fehler mit der folgenden Funktion, die in einem einfachen Plugin verwendet wird:

global $user_login;
   get_currentuserinfo();
   if ($user_login == "my-user") {

function keep_me_logged_in_for_1_year( $expirein ) {
   return 31556926; // 1 year in seconds
}
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );

}

Die Codex-Verwendung verwendet jedoch die global: https://codex.wordpress.org/Function_Reference/get_currentuserinfo

Dadurch bleiben natürlich alle Benutzer ein Jahr lang angemeldet:

function keep_me_logged_in_for_1_year( $expirein ) {
   return 31556926; // 1 year in seconds
}
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );
4
markratledge

get_currentuserinfo() ist eine steckbare Funktion, die während der Ladephase des Plugins nicht verfügbar ist.

Abgesehen davon sollten Sie Filter nicht unter bestimmten Bedingungen hinzufügen, sondern die vom Filter bereitgestellten Daten verwenden. Wenn Sie sich Filteraufrufe ansehen:

apply_filters( 'auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember )

$user_id wird als zweites Argument angegeben. Sie müssen nur Ihren Filter darauf abhören und die Rückgabe davon abhängig machen.

Hier ist ein ungetestetes Beispiel:

add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year', 10, 3 );

function keep_me_logged_in_for_1_year( $ttl, $user_id, $remember ) {
    if( 123 === $user_id )
        $ttl = YEAR_IN_SECONDS;
   return $ttl;
}
4
Rarst