如何在wordpress中更改会话过期时间

mac*_*ack 19 wordpress session

如果用户(admin)在wordpress站点中处于非活动状态15分钟,我希望会话到期,

任何人都可以告诉我什么是wordpress中的默认会话到期时间?以及如何更改默认过期时间.

Rez*_*mun 59

只需在主题的functions.php中添加此代码:

add_filter('auth_cookie_expiration', 'my_expiration_filter', 99, 3);
function my_expiration_filter($seconds, $user_id, $remember){

    //if "remember me" is checked;
    if ( $remember ) {
        //WP defaults to 2 weeks;
        $expiration = 14*24*60*60; //UPDATE HERE;
    } else {
        //WP defaults to 48 hrs/2 days;
        $expiration = 2*24*60*60; //UPDATE HERE;
    }

    //http://en.wikipedia.org/wiki/Year_2038_problem
    if ( PHP_INT_MAX - time() < $expiration ) {
        //Fix to a little bit earlier!
        $expiration =  PHP_INT_MAX - time() - 5;
    }

    return $expiration;
}
Run Code Online (Sandbox Code Playgroud)

  • 令人惊讶的是,WordPress根本不使用PHP会话.它只使用cookie.并且它使用了许多散列名称,所以你不想直接搞乱它们,用这样的过滤器做WordPress方式,或者通过调用WordPress API.例如,如果要注销当前用户,可以调用wp_clear_auth_cookie(),http://codex.wordpress.org/Function_Reference/wp_clear_auth_cookie (4认同)
  • 完全披露:WordPress*core*不使用会话.有些插件可能会.如果你想确定,你必须搜索你的插件的源代码.我注意到接受的答案中的引用是关于控制PHP会话持续时间的文章,它不会影响WordPress用户的登录状态. (2认同)
  • 您也可以控制对不同角色的访问时间.`if(user_can($ user_id,'manage_options')){$ expiration = 2*60*60; }` (2认同)
  • 我相信这个解决方案不会解决问题的"不活动"部分.此方法将更改cookie过期,但无论用户是否处于活动状态,用户都将被注销.WP似乎没有更新用户活动的cookie过期 - 它在登录时设置一次. (2认同)
  • 令人惊讶的是 WP 如何忽略这个问题,现在,7 年? (2认同)