Продлить сессию в WordPress

По умолчанию WordPress создает куки со временем жизни два для или две недели если установлена галочка «Запомнить меня»  (Remember me).

Страница входа WordPress

Страница входа WordPress

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

К счастью для такого случая есть специальный фильтр позволяющий задать время жизни сессии пользователя причем в зависимости роли текущего пользователя.

Как обычно я написал небольшой плагин который можно поместить в /wp-content/mu-plugins про такой способ я писал в посте про загрузку картинок по дням вроем его можно и обычным образом активировать.

Код плагина выглядит так

<!--?php <br ?--> /*
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 и описал фильтр.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *