Управление пользователями — одна из ключевых задач при администрировании WordPress-сайта, особенно если у вас много зарегистрированных пользователей. Со временем среди них накапливаются неактивные аккаунты, которые не только создают беспорядок в базе данных, но и могут представлять угрозу безопасности. В этой статье подробно рассмотрим, как автоматизировать процесс удаления неактивных пользователей WordPress с помощью кода и плагинов.
Почему важно удалять неактивных пользователей
Пользователи, которые не заходили на сайт длительное время, обычно не участвуют в жизни сообщества и не приносят пользы. Они занимают место в базе данных, что может замедлять работу сайта, а также увеличивают риски взлома, если их аккаунты были скомпрометированы или используют устаревшие пароли.
Регулярное очищение списка пользователей позволяет:
- Уменьшить размер базы данных и ускорить запросы к ней;
- Повысить безопасность, убрав потенциальные точки доступа;
- Упростить управление пользователями и коммуникацию с аудиторией.
Как определить неактивных пользователей
Ключевым моментом является критерий "неактивности". Чаще всего это отсутствие входа в личный кабинет в течение определённого времени, например, 6 месяцев или 1 года. WordPress по умолчанию не хранит дату последнего входа пользователя, поэтому сначала нужно обеспечить её сохранение.
Добавление даты последнего входа пользователя
Для этого воспользуемся хуком wp_login, который срабатывает при входе пользователя. Запишем мета-данные пользователя с текущей датой:
function wptask_update_last_login($user_login, $user) {
update_user_meta($user->ID, 'wptask_last_login', current_time('mysql'));
}
add_action('wp_login', 'wptask_update_last_login', 10, 2);После добавления этого кода при каждом входе будет обновляться значение мета-поля wptask_last_login.
Автоматическое удаление неактивных пользователей через wp-cron
Мы можем настроить регулярную задачу (cron), которая будет проверять пользователей и удалять тех, кто не заходил больше заданного времени.
Регистрация и запуск задачи
Добавим функцию для удаления и зарегистрируем её в cron:
function wptask_delete_inactive_users() {
$threshold = strtotime('-6 months'); // Порог неактивности
$users = get_users(array(
'meta_key' => 'wptask_last_login',
'meta_compare' => '<',
'meta_value' => date('Y-m-d H:i:s', $threshold),
'fields' => 'ID',
));
foreach ($users as $user_id) {
require_once(ABSPATH . 'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
// Запуск ежедневно
if (!wp_next_scheduled('wptask_daily_delete_inactive_users')) {
wp_schedule_event(time(), 'daily', 'wptask_daily_delete_inactive_users');
}
add_action('wptask_daily_delete_inactive_users', 'wptask_delete_inactive_users');Этот скрипт будет ежедневно запускать функцию, которая удаляет пользователей, не заходивших более 6 месяцев.
Плагины для упрощения задачи удаления неактивных пользователей
Если вы не хотите писать код, можно использовать готовые решения. Вот несколько популярных плагинов:
- Inactive User Deleter — позволяет настроить удаление пользователей, неактивных определённое время. Есть возможность исключать определённые роли.
- Remove Inactive Users — простой плагин с опциями по удалению или деактивации неактивных аккаунтов.
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wptask.ru&utm_medium=article&utm_campaign=avtomaticheskoe-udalenie-neaktivnyh-polzovatelej-v-wordpress) — мощный инструмент для оптимизации и безопасности, в том числе содержит функции управления пользователями.
Плагины обычно предоставляют интерфейс для настройки порога неактивности, роли пользователей для удаления и возможности резервного копирования перед удалением.
Использование WP-CLI для массового удаления неактивных пользователей
Если у вас есть доступ к командной строке, можно использовать WP-CLI для управления пользователями. Например, чтобы удалить пользователей, не заходивших более 6 месяцев, можно написать кастомный скрипт:
wp user list --field=ID --meta_key=wptask_last_login --meta_compare='<' --meta_value='2023-01-01' | xargs -n1 wp user delete --yesОбратите внимание, что дата 2023-01-01 — это пример, её нужно подставить исходя из текущей даты минус 6 месяцев.
Рекомендации и предосторожности
Перед автоматическим удалением пользователей обязательно сделайте резервную копию базы данных. Рассмотрите возможность сначала помечать пользователей как неактивных, отправлять уведомления и только потом удалять.
Также уделите внимание исключению из удаления администраторов и важных аккаунтов.
Для удобства можно добавить проверку роли пользователя в функцию удаления:
function wptask_delete_inactive_users() {
$threshold = strtotime('-6 months');
$users = get_users(array(
'meta_key' => 'wptask_last_login',
'meta_compare' => '<',
'meta_value' => date('Y-m-d H:i:s', $threshold),
'fields' => array('ID', 'roles'),
));
foreach ($users as $user) {
if (in_array('administrator', $user->roles)) {
continue; // не удаляем админов
}
require_once(ABSPATH . 'wp-admin/includes/user.php');
wp_delete_user($user->ID);
}
}Заключение
Автоматическое удаление неактивных пользователей — важная задача для поддержания безопасности и производительности WordPress-сайта. Используя простой код и плагины, вы сможете эффективно управлять базой пользователей, не допуская «засорения» и угроз безопасности. Обязательно тестируйте решения на тестовом сайте и делайте резервные копии.