Mantenha um usuário logado por um ano?

4

Isso tem que ser simples: como manter um usuário - my-user - logado por um ano? (Eu estou verificando os cookies registrados no console de ferramentas de desenvolvimento).

Atualização em 16/8/15

Isso funciona:

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

E com a opção de matriz, isso funciona para vários usuários:

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

Atualização 8/12/15: Re: Resposta de Rarst abaixo: já que get_currentuserinfo é plugável, como eu usaria apply_filters neste contexto?

Estou recebendo um erro Call to undefined function get_currentuserinfo() com essa função abaixo usada em um plug-in simples:

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

}

Mas o uso do Codex usa o global : enlace

Isso, é claro, mantém todos os usuários logados por um ano:

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' );
    
por markratledge 12.08.2015 / 17:18

1 resposta

4

get_currentuserinfo() é uma função conectável, não está disponível durante o estágio de carregamento de plugins.

Além disso, você não deve adicionar filtro condicionalmente, mas usar os dados fornecidos pelo filtro. Se você der uma olhada nas chamadas de filtro:

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

$user_id é fornecido como segundo argumento. Basta que o seu filtro o ouça e modifique o retorno condicionalmente.

Veja um exemplo não testado:

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;
}
    
por Rarst 12.08.2015 / 17:49