В некоторых случаях необходимо ограничить доступ в админ-панель или на сайт для пользователей, которые длительное время не проявляли активности. Это помогает повысить безопасность, уменьшить нагрузку и улучшить управление учетными записями. В этой статье разберем, как отключить вход в WordPress для неактивных пользователей с помощью кода и плагинов, а также рассмотрим примеры практической реализации.
Почему важно отключать вход для неактивных пользователей WordPress
Неактивные пользователи — это учетные записи, которые не входили в систему длительное время. Такие аккаунты могут представлять угрозу безопасности, особенно если были скомпрометированы или забыты. Кроме того, большое количество неактивных пользователей усложняет управление сайтом и повышает риски утечки данных.
Отключение входа для таких пользователей позволяет:
- Снизить вероятность несанкционированного доступа;
- Упростить управление учетными записями;
- Автоматически поддерживать чистоту базы пользователей;
- Повысить безопасность сайта без значительных затрат времени.
Как определить неактивных пользователей в WordPress
Для отслеживания активности пользователей можно использовать поле last_login или мета-данные пользователя. WordPress по умолчанию не хранит дату последнего входа, поэтому придется добавить это самостоятельно. Для этого можно использовать плагин или написать код, который будет сохранять дату входа в базу.
Пример функции, которая сохраняет дату последнего входа пользователя:
function wplogin_save_last_login( $user_login, $user ) {
update_user_meta( $user->ID, 'wplogin_last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wplogin_save_last_login', 10, 2 );Эта функция добавит мета-данные с ключом wplogin_last_login, где будет храниться дата последнего входа в формате MySQL.
Отключение входа для неактивных пользователей через код
Шаг 1. Добавляем проверку при входе
Далее нужно проверять дату последнего входа и сравнивать с текущей датой. Если пользователь не заходил, например, больше 90 дней, вход будет запрещен.
function wplogin_block_inactive_users( $user, $username, $password ) {
$last_login = get_user_meta( $user->ID, 'wplogin_last_login', true );
if ( ! $last_login ) {
// Если даты нет, считаем пользователя активным
return $user;
}
$last_login_time = strtotime( $last_login );
$days_inactive = ( time() - $last_login_time ) / DAY_IN_SECONDS;
if ( $days_inactive > 90 ) { // 90 дней
return new WP_Error( 'authentication_failed', __( '<strong>Ошибка:</strong> ваша учетная запись неактивна более 90 дней и временно заблокирована.' ) );
}
return $user;
}
add_filter( 'authenticate', 'wplogin_block_inactive_users', 30, 3 );Этот код не позволит войти пользователям, которые не заходили в систему более 90 дней. Сообщение об ошибке появится на странице входа.
Шаг 2. Опционально: отправка уведомления пользователю
Чтобы не блокировать пользователя внезапно, можно отправлять ему уведомления за несколько дней до блокировки. Для этого используйте WP-Cron и функцию проверки активности.
function wplogin_notify_inactive_users() {
$args = array(
'meta_key' => 'wplogin_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-80 days')),
'meta_compare' => '<=',
'fields' => 'all',
);
$users = get_users( $args );
foreach ( $users as $user ) {
$to = $user->user_email;
$subject = 'Уведомление о неактивности учетной записи';
$message = 'Здравствуйте, ваш аккаунт не использовался более 80 дней. Через 10 дней он будет временно заблокирован, если вы не войдете на сайт.';
wp_mail( $to, $subject, $message );
}
}
if ( ! wp_next_scheduled( 'wplogin_notify_inactive_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wplogin_notify_inactive_hook' );
}
add_action( 'wplogin_notify_inactive_hook', 'wplogin_notify_inactive_users' );<Данный код ежедневно проверяет пользователей с датой последнего входа более 80 дней назад и отправляет уведомление по email.
Использование плагинов для управления неактивными пользователями
Если вы не хотите писать код, можно использовать готовые решения. Вот несколько плагинов, которые помогут управлять неактивными пользователями:
- Inactive User Deleter — автоматически удаляет или деактивирует пользователей, которые не входили в систему за заданный период.
- WP Last Login — записывает дату последнего входа и позволяет фильтровать пользователей по активности.
- User Blocker — блокирует вход для выбранных пользователей или групп, в том числе для неактивных.
Например, User Blocker позволяет массово блокировать пользователей и настраивать период блокировки, что удобно для решения нашей задачи.
Интеграция с плагином Clearfy Pro для безопасности
Плагин Clearfy Pro предлагает расширенные инструменты безопасности, включая управление сессиями и блокировку пользователей. Его можно настроить для автоматической деактивации или ограничения входа для неактивных пользователей, что дополнительно усилит защиту.
Резюме и рекомендации по внедрению
Отключение входа для неактивных пользователей — важная часть комплексной безопасности сайта. Рекомендуется:
- Отслеживать дату последнего входа с помощью пользовательских мета-данных;
- Автоматизировать блокировку с уведомлениями;
- Использовать проверенные плагины при отсутствии навыков программирования;
- Регулярно проверять базу пользователей и удалять или деактивировать устаревшие аккаунты.
Используя приведенный код и рекомендации, вы сможете эффективно контролировать доступ и повысить безопасность вашего WordPress-сайта.