配置WordPress身份验证Cookie到期

时间:2018-01-03 作者:Ynhockey

我正在尝试配置WordPress cookie过期时间,但由于某些原因,它不起作用。我来到这里:

https://developer.wordpress.org/reference/hooks/auth_cookie_expiration/

并根据文档放置以下挂钩:

function init() {
    // ...
    $expiration = 60;
    apply_filters( \'auth_cookie_expiration\', $expiration );
}
此代码是从插件构造函数中的挂钩调用的:

add_action( \'init\', array( $this, \'init\' ) );
我已经验证了它是否运行。

我希望这会产生一个在60秒内过期的cookie,但事实并非如此。相反,它设置了48小时的常规过期时间(WP默认值)。我怀疑这可能是因为当用户实际登录时,它不会创建此过期日期,并且稍后运行此函数没有任何效果。不过,我还没有想出如何让它发挥作用。感谢您的帮助。

2 个回复
最合适的回答,由SO网友:birgire 整理而成

请注意,您没有添加任何具有以下内容的筛选器回调:

apply_filters( \'auth_cookie_expiration\', $expiration );
而是使用:

add_filter( \'auth_cookie_expiration\', $callback, 10, 3 );
在哪里$callback 是修改过期时间的适当筛选器回调。

这里有一个例子

add_filter( \'auth_cookie_expiration\', function( $length, $user_id, $remember ) {
    return $length; // adjust this to your needs.
}, 10, 3 );
或者为了适应当前的课程设置:

add_filter( \'auth_cookie_expiration\', [ $this, \'set_auth_cookie_expiration\' ], 10, 3 );
在哪里set_auth_cookie_expiration() 是适当的方法,例如:

public function set_auth_cookie_expiration ( $length, $user_id, $remember ) 
{
    return $length; // adjust this to your needs.
}

SO网友:Ankit Sewadik
add_filter( \'auth_cookie_expiration\', \'keep_me_logged_in_for_1_year\' );

function keep_me_logged_in_for_1_year( $expirein ) {
    return 31556926; // 1 year in seconds
}
结束

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!