Управление пользователями — важная задача для администраторов WordPress-сайтов, особенно когда на сайте скапливается много неактивных или заблокированных аккаунтов. Они могут создавать дополнительную нагрузку на базу данных и представлять угрозу безопасности. В этой статье подробно разберем, как эффективно находить и удалять таких пользователей с помощью кода и плагинов.
Почему важно удалять неактивных и заблокированных пользователей
Неактивные пользователи — это учетные записи, которые долгое время не заходили на сайт. Заблокированные пользователи — те, чьи аккаунты были деактивированы или ограничены. Причин для очистки базы пользователей несколько:
- Оптимизация базы данных: меньше записей — быстрее запросы к базе;
- Безопасность: старые аккаунты могут быть взломаны или использоваться злоумышленниками;
- Удобство администрирования: проще работать с актуальными пользователями;
- Снижение нагрузки на сервер: при большом количестве пользователей администраторы и плагины быстрее ищут и обрабатывают данные.
Удаление таких пользователей — часть регулярного технического обслуживания.
Как определить неактивных пользователей: выбор критериев
Прежде чем удалять пользователей, нужно правильно определить, кто именно попадает под категорию «неактивный» или «заблокированный».
По дате последнего входа
Самый распространённый критерий — дата последнего логина. К сожалению, WordPress по умолчанию не хранит эту информацию, но ее можно добавить с помощью плагинов или кода.
Для отслеживания даты последнего входа можно использовать плагин WP Last Login. Он автоматически записывает время входа пользователя в метаполе.
По статусу пользователя
Заблокированных пользователей часто отмечают специальной ролью или меткой. Например, можно назначить роль blocked или сохранить метаданные blocked = true. Если такой подход не использовался, придется искать по другим признакам.
По активности на сайте
Если на сайте есть логи активности или данные о комментариях/публикациях, можно ориентироваться на дату последней активности.
Удаление неактивных пользователей с помощью кода
Рассмотрим пример функции, которая удаляет пользователей, не заходивших на сайт более 180 дней. Для работы потребуется плагин WP Last Login или аналогичный, который сохраняет дату последнего логина в метаполе last_login.
function wplist_delete_inactive_users() {
$threshold = strtotime('-180 days');
$args = [
'role__not_in' => ['administrator'], // не трогаем админов
'meta_query' => [
[
'key' => 'last_login',
'value' => $threshold,
'compare' => '<',
'type' => 'NUMERIC'
]
],
'fields' => 'ID',
'number' => 1000
];
$user_query = new WP_User_Query($args);
$users = $user_query->get_results();
if (!empty($users)) {
foreach ($users as $user_id) {
wp_delete_user($user_id);
}
}
}
// Запускаем вручную или в кроне
wplist_delete_inactive_users();В этом коде мы исключаем администраторов, чтобы случайно не удалить важные аккаунты. Также ограничиваем выборку 1000 пользователями за один запуск, чтобы не перегружать сервер.
Удаление заблокированных пользователей по метаданным
Если у вас есть метка, например, blocked в пользовательских метаданных, можно удалить всех таких пользователей так:
function wplist_delete_blocked_users() {
$args = [
'meta_key' => 'blocked',
'meta_value' => '1',
'fields' => 'ID',
'number' => 1000
];
$user_query = new WP_User_Query($args);
$users = $user_query->get_results();
if (!empty($users)) {
foreach ($users as $user_id) {
wp_delete_user($user_id);
}
}
}
wplist_delete_blocked_users();Важно предварительно убедиться, что мета blocked действительно существует и проставлен корректно.
Удаление пользователей с помощью плагинов
Если вы не хотите писать код, можно воспользоваться готовыми плагинами:
- Inactive User Deleter — удаляет пользователей, которые не заходили на сайт определённое время;
- User Blocker — позволяет блокировать и удалять пользователей;
- WP Last Login — помогает отследить дату последнего входа и на её основе принимать решения.
Для интеграции с такими плагинами можно автоматизировать удаление через их интерфейсы или дополнительно запускать кастомный код.
Резервное копирование перед массовым удалением
Обязательно создавайте резервную копию базы данных перед удалением большого количества пользователей. Это позволит восстановить данные в случае ошибки. Для резервного копирования можно использовать популярные плагины, например, Backup от WPShop.
Советы по автоматизации удаления неактивных пользователей
Чтобы не заниматься удалением вручную, можно настроить автоматический запуск функций удаления через cron задачи WordPress. Пример добавления cron задачи:
function wplist_schedule_inactive_user_deletion() {
if (!wp_next_scheduled('wplist_delete_inactive_users_cron')) {
wp_schedule_event(time(), 'daily', 'wplist_delete_inactive_users_cron');
}
}
add_action('wp', 'wplist_schedule_inactive_user_deletion');
add_action('wplist_delete_inactive_users_cron', 'wplist_delete_inactive_users');Так вы будете регулярно очищать базу без лишних усилий.
Заключение
Удаление неактивных и заблокированных пользователей — важная задача для поддержки безопасности и производительности WordPress-сайта. Используйте описанные методы, чтобы эффективно управлять своей базой пользователей. Не забывайте делать резервные копии и тестировать код на тестовом сайте перед применением на рабочем.