Php 在wordpress中使用auth_cookie_expiration来超时cookie,但不用于管理员

Php 在wordpress中使用auth_cookie_expiration来超时cookie,但不用于管理员,php,wordpress,Php,Wordpress,我想知道你是否能帮我做点什么。下面这段代码的工作原理是,在登录30秒后(是的,只是为了测试),用户会注销,但管理员不会 function logout_after_time( $expiration, $user_id) { if(!user_can($user_id, 'update_plugins') ){ $expiration = 30; // yes this is 30 seconds for testing } return $expirat

我想知道你是否能帮我做点什么。下面这段代码的工作原理是,在登录30秒后(是的,只是为了测试),用户会注销,但管理员不会

function logout_after_time( $expiration, $user_id) {
    if(!user_can($user_id, 'update_plugins') ){
        $expiration = 30; // yes this is 30 seconds for testing
    }
    return $expiration;
}
add_filter('auth_cookie_expiration','logout_after_time', 10, 2);
但是,如果我将其更改为以下内容:

function logout_after_time( $expiration, $user_id) {
        if(!current_user_can($user_id, 'administrator') ){
            $expiration = 30; // yes this is 30 seconds for testing
        }
        return $expiration;
    }
    add_filter('auth_cookie_expiration','logout_after_time', 10, 2);
它将注销所有用户。我一辈子都想不出这是为什么?理想情况下,我并不真的想检查上限,我想检查一个角色


你知道我做错了什么吗?感谢所有能够提供帮助的人:)

使用
当前用户\u can
不应用于检查角色,请参阅:

不鼓励将角色名称传递给当前用户,因为这是不允许的 保证正常工作(见#22624)

但是,要检查角色,可以做的是查看当前用户的角色数组中是否有一个角色:

$currentUser = wp_get_current_user();
if ( !in_array( 'administrator', (array) $user->roles ) ) {
    // Do something for users that don't have to role ' administrator'. 
} 

感谢Dirk使用您的代码(做了一些更改)
$currentUser=wp\u get\u current\u user();如果(!in_array('administrator',(array)$currentUser->roles)){add_filter('auth_cookie_expiration',30)}
仍然导致管理员在时间段后注销,这是我的挫折!