По умолчанию WordPress создает куки со временем жизни два для или две недели если установлена галочка «Запомнить меня» (Remember me).
Когда регистрация на сайте открыта этого часто этого бывает недостаточно, и пользователи жалуются что им приходится все время вводить пароль.
К счастью для такого случая есть специальный фильтр позволяющий задать время жизни сессии пользователя причем в зависимости роли текущего пользователя.
Как обычно я написал небольшой плагин который можно поместить в /wp-content/mu-plugins про такой способ я писал в посте про загрузку картинок по дням вроем его можно и обычным образом активировать.
Код плагина выглядит так
<?php /* Plugin Name: Cookie shifter Plugin URI: https://alkoweb.ru/p=995 Author: Vladimir Petrozavodsky Author URI: http://alkoweb.ru */ add_filter( 'auth_cookie_expiration', function ( $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; }, 100, 3 );
После установки плагина для администратора куки живу 5 или 20 дней (в зависимости от галочки «Запомнить меня» ).
Для всех остальных ролей пользователей куки живут 360 или 180 дней.
При желании можно изменить код под свои нужды что бы это сделать было легче можно использовать константы WordPress содержащие временные интервалы в секундах
- Минута в секундах — MINUTE_IN_SECONDS
- Час в секундах — HOUR_IN_SECONDS
- День в секундах -DAY_IN_SECONDS
- Неделя в секундах — WEEK_IN_SECONDS
- Год в секундах -YEAR_IN_SECONDS
Умножая эти константы на какое либо число число можно получить желаемое время в секундах.
В этот раз я решил подойти комплексно, выложил плагин в Github и описал фильтр.