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' );
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;
}