Как отключить автологин и чекбокс «Запомнить меня» на странице входа WordPress

На части проектов проблема не в самом входе, а в том, что пользователь остаётся авторизован слишком долго. Это критично для админок на общих компьютерах, внутренних порталов, клиентских кабинетов и сайтов с повышенными требованиями к безопасности. В WordPress за это обычно отвечают два механизма: чекбокс rememberme на форме входа и срок действия авторизационных cookies.

Ниже — рабочий способ убрать «Запомнить меня» с формы, принудительно отключить долгую сессию и при необходимости сократить время жизни авторизации для всех пользователей или только для части ролей.

Когда это действительно нужно

Не стоит отключать автологин «на всякий случай». Но есть сценарии, где это оправдано:

  • внутренний корпоративный портал с общими рабочими местами;
  • админка, к которой заходят подрядчики или внешние редакторы;
  • личный кабинет, где нельзя оставлять сессию на неделю и дольше;
  • сайт, где вход используется редко, а риск забытых сессий выше удобства.

Если у вас обычный контентный сайт с личными аккаунтами, отключение «Запомнить меня» может ухудшить UX. Тогда лучше ограничить срок сессии только для админов или редакторов.

Диагностика: что именно сейчас включает долгий вход

Перед правкой кода проверьте, откуда берётся длительная авторизация. Обычно это один из трёх вариантов:

  1. на форме входа есть чекбокс rememberme;
  2. тема или плагин подменяет форму входа и добавляет свой автологин;
  3. срок cookies увеличен фильтром auth_cookie_expiration.

Если чекбокс виден, но после входа сессия всё равно короткая, значит кто-то уже ограничивает срок авторизации. Если чекбокса нет, но пользователь остаётся залогинен надолго, проверьте фильтр на срок cookie и плагины безопасности/членства.

Что проверить в первую очередь

  • страницу входа: стандартная /wp-login.php или кастомная форма;
  • активные плагины, которые меняют логин-форму;
  • файл functions.php дочерней темы и mu-plugins;
  • наличие фильтра auth_cookie_expiration в коде проекта.

Решение: убрать «Запомнить меня» и сократить срок сессии

Если задача — убрать долгий вход для всех пользователей, удобнее сделать это кодом в небольшом плагине или в mu-plugins. Так настройка не потеряется при смене темы.

1. Скрыть чекбокс «Запомнить меня» на форме входа

В стандартной форме WordPress чекбокс можно убрать через фильтр login_form_defaults. Это не ломает авторизацию, а просто убирает опцию из интерфейса.

<?php
/**
 * Plugin Name: Disable Remember Me on Login
 */

add_filter('login_form_defaults', function ($defaults) {
    if (isset($defaults['remember'])) {
        $defaults['remember'] = false;
    }

    return $defaults;
});

Этот вариант работает для стандартной формы входа WordPress. Если у вас кастомная форма из темы или плагина, нужно искать её шаблон и убирать чекбокс там.

2. Принудительно отключить долгую сессию

Даже если кто-то отправит rememberme=forever, можно ограничить срок cookie фильтром auth_cookie_expiration. Пример ниже задаёт короткую сессию для всех пользователей.

<?php
add_filter('auth_cookie_expiration', function ($expiration, $user_id, $remember) {
    return 2 * HOUR_IN_SECONDS;
}, 10, 3);

Если нужно оставить более длинную сессию для администраторов, а для остальных сократить, фильтр можно сделать условным:

<?php
add_filter('auth_cookie_expiration', function ($expiration, $user_id, $remember) {
    $user = get_userdata($user_id);

    if (!$user) {
        return $expiration;
    }

    if (in_array('administrator', (array) $user->roles, true)) {
        return 8 * HOUR_IN_SECONDS;
    }

    return 2 * HOUR_IN_SECONDS;
}, 10, 3);

Такой подход полезен, если редакторам и менеджерам нужен короткий рабочий сеанс, а администраторам — чуть больше времени на обслуживание сайта.

3. Если нужно полностью игнорировать rememberme

Иногда чекбокс нельзя просто скрыть: его добавляет сторонняя форма, а пользователь всё равно может передать параметр. Тогда можно принудительно сбрасывать флаг remember на этапе логина.

<?php
add_filter('authenticate', function ($user, $username, $password) {
    if (is_wp_error($user) || !$user instanceof WP_User) {
        return $user;
    }

    // Здесь можно дополнительно проверить роль или тип пользователя.
    return $user;
}, 30, 3);

Сам по себе этот фильтр не меняет срок cookie, но его часто используют вместе с ограничением auth_cookie_expiration, если логика входа сложнее стандартной. В большинстве случаев достаточно двух предыдущих шагов.

Сравнение подходов

ПодходЧто делаетПлюсыМинусы
Скрыть чекбокс в формеУбирает опцию из интерфейсаПросто, понятно пользователюНе защищает от ручной отправки параметра
auth_cookie_expirationОграничивает срок сессииРаботает на уровне ядраНужно аккуратно выбрать срок
Кастомная форма входаПолный контроль над UXГибкостьБольше кода и точек отказа

Пошаговая настройка без лишнего риска

  1. Сделайте резервную копию файлов и базы.
  2. Добавьте код в небольшой плагин или mu-plugins, а не в родительскую тему.
  3. Сначала скройте чекбокс на форме входа.
  4. Затем ограничьте срок cookie через auth_cookie_expiration.
  5. Проверьте вход под разными ролями.

Если на сайте есть WooCommerce или другой плагин, который использует вход в /my-account/, проверьте и эту форму. Иногда она рендерится отдельно от стандартного wp-login.php, и правка в ядре формы на неё не влияет.

Проверка результата после внедрения

После правки важно не просто увидеть скрытый чекбокс, а убедиться, что сессия реально стала короче.

  • Откройте страницу входа в приватном окне.
  • Проверьте, что чекбокс «Запомнить меня» отсутствует или не влияет на срок сессии.
  • Войдите под тестовым пользователем.
  • Закройте браузер, откройте сайт снова и проверьте, осталась ли авторизация.
  • Подождите срок, который вы задали в auth_cookie_expiration, и проверьте повторный вход.

Если используете кэш-плагины или reverse proxy, убедитесь, что страница входа не кэшируется. Иначе можно получить старую форму без изменений или, что хуже, проблемы с авторизацией.

Частые ошибки и как их исправить

Чекбокс скрыли, но сессия всё равно длинная

Значит, ограничение срока cookie не настроено. Скрытие элемента интерфейса не меняет поведение авторизации само по себе.

Изменения внесли в тему, а потом они пропали

Если код лежит в functions.php родительской темы, он исчезнет при обновлении. Перенесите его в дочернюю тему или отдельный плагин.

Кастомная форма входа не реагирует на фильтр

Некоторые плагины авторизации рисуют форму сами и не используют стандартные шаблоны WordPress. В этом случае нужно править их шаблон или искать собственные хуки плагина.

Пользователи жалуются, что их слишком часто разлогинивает

Слишком короткий срок cookie — частая причина. Не ставьте одинаковое значение для всех ролей без проверки сценариев использования. Для редакторов и админов обычно нужен более мягкий режим, чем для обычных клиентов.

Безопасность и производительность

Отключение автологина — это не замена защите от brute force и не альтернатива двухфакторной аутентификации. Но в проектах с короткими сессиями оно снижает риск того, что забытая авторизация останется активной на чужом устройстве.

С точки зрения производительности этот код почти ничего не меняет: фильтры выполняются на этапе входа, а не на каждом запросе. Главное — не добавлять лишнюю логику в auth_cookie_expiration и не делать там тяжёлые запросы к базе.

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

WooCommerce: как реализовать авторизацию через OTP без SMS-провайдеров
13.06.2026
WordPress OTP авторизация через SMS и Email: настройка и примеры кода
14.12.2025
WooCommerce: автоматическое удаление пользователя при отмене подписки
23.06.2026
WordPress регистрация без подтверждения Email: как реализовать и зачем это нужно
30.03.2026
WooCommerce: ограничение доступа к страницам по ролям пользователей
26.04.2026