auth_cookie_expiration хук-фильтр . WP 2.8.0
Позволяет изменить время жизни cookie используемых для авторизации пользователей.
Использование
add_filter( 'auth_cookie_expiration', 'filter_function_name_11', 10, 3 ); function filter_function_name_11( $length, $user_id, $remember ){ // filter... return $length; }
- $length(число)
- Продолжительность жизни cookie в секундах.
- $user_id(число)
- ID пользователя.
- $remember(true/false)
- Показывает была ли выбрана галочка "Запоминть" при авторизации. Обычно, при запоминании время жизни куков увеличивается еще.
По умолчанию: false
Примеры
#1 Продлить сессии всех пользователей в два раза от текущего значения
add_filter( 'auth_cookie_expiration', 'my_auth_cookie_expiration', 20, 3 ); function my_auth_cookie_expiration( $expiration, $user_id, $remember ) { return $expiration * 2; }
#2 Продлить сессию в зависимости от роли пользователя
Продлить сессию администратора до 20 дней если установлена галочка "Запомнить меня" и до 5 дней если не установлена.
Для всех остальных пользователей продлить сессии до полугода если галочка "Запомнить меня" не установлена и до года если установлена.
add_filter( 'auth_cookie_expiration', 'cookie_expiration_new', 20, 3 ); function cookie_expiration_new ( $expiration, $user_id, $remember ) { // Время жизни cookies для администратора if ( $remember && user_can( $user_id, 'manage_options' ) ) { // Если установлена галочка if ( $remember == true ) { return 20 * DAY_IN_SECONDS; } // Если не установлена return 5 * DAY_IN_SECONDS; } // Для всех остальных пользователей // Если установлена галочка if ( $remember == true ) { return 360 * DAY_IN_SECONDS; } // Если не установлена return 180 * DAY_IN_SECONDS; }
Список изменений
С версии 2.8.0 | Введена. |
Где вызывается хук
auth_cookie_expiration
auth_cookie_expiration
wp-includes/pluggable.php 856
$expiration = time() + apply_filters( 'auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember );
wp-includes/pluggable.php 865
$expiration = time() + apply_filters( 'auth_cookie_expiration', 2 * DAY_IN_SECONDS, $user_id, $remember );
wp-includes/user.php 2350
$default_cookie_life = apply_filters( 'auth_cookie_expiration', ( 2 * DAY_IN_SECONDS ), $ID, false );