web-dev-qa-db-fra.com

Conserver un utilisateur connecté pendant un an?

Cela doit être simple: comment garder un utilisateur - my-user - connecté pendant un an? (Je vérifie les cookies enregistrés dans la console des outils de développement).

Update 8/16/15

Cela marche:

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

Et avec l'option array, cela fonctionne pour plusieurs utilisateurs:

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: Réponse: La réponse de Rarst est la suivante: puisque get_currentuserinfo est enfichable, comment pourrais-je utiliser apply_filters dans ce contexte?

Je reçois une erreur Call to undefined function get_currentuserinfo() avec cette fonction ci-dessous utilisée dans un plugin simple:

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

}

Mais l'utilisation du Codex utilise la global: https://codex.wordpress.org/Function_Reference/get_currentuserinfo

Ceci, bien sûr, garde tous les utilisateurs connectés pendant un an:

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() est une fonction connectable, elle n’est pas disponible pendant la phase de chargement des plugins.

Cela dit, vous ne devriez pas ajouter de filtre de manière conditionnelle, mais utiliser les données fournies par le filtre. Si vous examinez les appels de filtre:

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

$user_id est fourni en tant que deuxième argument. Il suffit que votre filtre l'écoute et modifie le retour conditionnel sur celui-ci.

Voici un exemple non testé:

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