Управление пользователями — одна из ключевых задач администратора сайта на WordPress. Со временем база пользователей может разрастаться, и среди них появляются неактивные аккаунты, которые не приносят пользы и могут даже негативно влиять на безопасность и производительность сайта. В этой статье подробно разберём, как определить и удалить неактивных пользователей в WordPress, используя как готовые плагины, так и собственные решения на PHP.
Почему важно удалять неактивных пользователей
Неактивные пользователи — это аккаунты, которые давно не заходили на сайт, не оставляли комментариев, не совершали действий. Их наличие может привести к нескольким проблемам:
- Безопасность: неактивные аккаунты могут быть взломаны и использованы злоумышленниками;
- Производительность: большое количество пользователей замедляет работу административной панели и запросы к базе данных;
- Управление: сложнее отслеживать и анализировать активность настоящих пользователей;
- Спам и мусор: если на сайте разрешена регистрация, боты могут создавать неактивные аккаунты.
Поэтому регулярное удаление таких пользователей — необходимая практика.
Как определить неактивных пользователей в WordPress
Для начала нужно задать критерии, по которым мы будем считать пользователя неактивным. Чаще всего используются следующие параметры:
- Дата последнего входа на сайт;
- Дата последнего опубликованного комментария;
- Дата последней активности (если настроено отслеживание);
- Роль пользователя (например, удалять только подписчиков);
- Период неактивности — обычно от 6 месяцев и дольше.
В стандартной установке WordPress дата последнего входа не сохраняется. Чтобы её отслеживать, можно использовать специальные плагины или самостоятельно добавить код для сохранения этой информации.
Отслеживание последнего входа с помощью плагина WP Activity Log
Плагин WP Security Audit Log позволяет записывать события входа пользователей и многое другое. После установки он будет вести журнал активности и поможет выявить неактивных.
Добавление сохранения даты последнего входа вручную
Можно добавить следующий код в functions.php вашей активной темы или в собственный плагин для сохранения даты последнего входа пользователя:
add_action('wp_login', 'wp7_save_last_login', 10, 2);
function wp7_save_last_login($user_login, $user) {
update_user_meta($user->ID, 'wp7_last_login', current_time('mysql'));
}
Этот код записывает дату и время входа в мета-поле пользователя wp7_last_login. Далее можно использовать это поле для фильтрации неактивных.
Удаление неактивных пользователей с помощью плагинов
Если не хочется писать код, можно воспользоваться готовыми плагинами:
- Inactive User Deleter — позволяет настроить удаление пользователей, неактивных заданное количество дней. Поддерживает резервное копирование удаляемых аккаунтов.
- Bulk Delete — мощный плагин для массового удаления пользователей по разным критериям, включая дату регистрации и роль пользователя.
- WP Bulk Delete — похожий инструмент с удобным интерфейсом для массового удаления по активности.
Пример настройки Inactive User Deleter:
- Установите и активируйте плагин;
- Перейдите в настройки плагина;
- Выберите период неактивности, например, 180 дней;
- Выберите роли пользователей для удаления (например, подписчики);
- Запустите процесс удаления.
Автоматизация удаления неактивных пользователей с помощью кода
Если вы предпочитаете собственные решения, можно написать функцию, которая будет искать и удалять пользователей, не входивших в админку более полугода.
function wp7_delete_inactive_users() {
$six_months_ago = date('Y-m-d H:i:s', strtotime('-6 months'));
$args = array(
'meta_key' => 'wp7_last_login',
'meta_value' => $six_months_ago,
'meta_compare' => '<',
'fields' => 'ID',
'role__in' => array('subscriber'), // Роли, которые нужно проверить
'number' => 100
);
$user_query = new WP_User_Query($args);
$users_to_delete = $user_query->get_results();
foreach ($users_to_delete as $user_id) {
wp_delete_user($user_id);
}
}
// Запуск функции по cron или вручную
// wp7_delete_inactive_users();
Этот код ищет пользователей с ролью подписчика, у которых последний вход был более 6 месяцев назад, и удаляет их. Чтобы код работал, нужно заранее добавить отслеживание даты последнего входа, как показано выше.
Добавление задачи в WP-Cron для регулярного удаления
Чтобы запускать удаление автоматически, можно добавить задачу в WP-Cron:
if (!wp_next_scheduled('wp7_delete_inactive_users_cron')) {
wp_schedule_event(time(), 'daily', 'wp7_delete_inactive_users_cron');
}
add_action('wp7_delete_inactive_users_cron', 'wp7_delete_inactive_users');
Таким образом функция будет запускаться ежедневно и очищать базу от неактивных пользователей.
Особенности и рекомендации
При удалении пользователей стоит соблюдать осторожность:
- Создайте бэкап базы данных перед массовыми удалениями;
- Не удаляйте администраторов и редакторов без крайней необходимости;
- Сообщайте пользователям о возможном удалении при длительной неактивности;
- Используйте плагин Clearfy Pro для комплексной оптимизации и контроля пользователей.
Заключение
Удаление неактивных пользователей в WordPress — важный этап поддержания безопасности и производительности сайта. Выбор между плагином и собственным кодом зависит от ваших навыков и требований. Используйте приведённые примеры и рекомендации, чтобы автоматизировать процесс и держать базу данных в чистоте.