Использование auth_cookie_expiration в WordPress для тайм-аута cookie, но не для администратора - PullRequest
0 голосов
/ 29 сентября 2019

Интересно, не могли бы вы мне чем-нибудь помочь? Следующий фрагмент кода работает так, что после 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);

Выход из системы всех пользователей. Я не могу на всю жизнь думать, почему это так? В идеале я не хочу проверять наличие заглавных букв, я хотел бы проверить роль.

Есть идеи, что я делаю неправильно? Спасибо всем, кто может помочь:)

1 Ответ

0 голосов
/ 29 сентября 2019

Использование current_user_can не должно использоваться для проверки ролей, см. Документацию :

Передача имен ролей в current_user_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'. 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...