В крупных и средних проектах на WordPress нередко накапливается множество пользователей, которые зарегистрировались, но давно не заходили на сайт. Такие аккаунты увеличивают нагрузку на базу данных, создают проблемы с безопасностью и усложняют администрирование. В этой статье мы подробно разберем, как автоматически удалять неактивных пользователей WordPress, используя примеры кода и плагины.
Почему важно удалять неактивных пользователей WordPress
Накопление неактивных пользователей — это не только вопрос порядка. Вот основные причины, почему стоит автоматизировать их удаление:
- Оптимизация базы данных: чем меньше записей, тем лучше скорость запросов и меньше размер резервных копий.
- Улучшение безопасности: неактивные аккаунты часто становятся целью для взломов, поскольку их владельцы не следят за безопасностью.
- Чистота пользователей: проще анализировать активную аудиторию и строить маркетинговые кампании.
- Улучшение производительности админки: меньше пользователей — быстрее работают списки и фильтры.
Как определить неактивного пользователя: критерии и ограничения
Для начала нужно определиться, кого считать неактивным. Обычно ориентируются на дату последнего входа (логина) пользователя в систему.
WordPress по умолчанию не сохраняет дату последнего входа, поэтому нам придется добавить этот функционал самостоятельно.
Добавляем сохранение даты последнего входа
Для этого используем хук wp_login, который срабатывает при каждом успешном входе пользователя:
function wpbono_update_last_login($user_login, $user) {
update_user_meta($user->ID, 'wpbono_last_login', current_time('mysql'));
}
add_action('wp_login', 'wpbono_update_last_login', 10, 2);
Этот код обновит мета-поле wpbono_last_login с текущей датой и временем при каждом входе пользователя.
Как проверить дату последнего входа
Чтобы получить дату последнего логина, используйте:
$last_login = get_user_meta($user_id, 'wpbono_last_login', true);
Автоматическое удаление неактивных пользователей с помощью WP-CLI
Если у вас есть доступ к консоли сервера, можно использовать WP-CLI — мощный инструмент для управления WordPress из командной строки.
Пример команды для удаления пользователей, которые не заходили более 180 дней:
wp user list --field=ID --meta_key=wpbono_last_login --meta_compare='<=' --meta_value='2023-01-01 00:00:00' | xargs -I % wp user delete % --yes
Здесь нужно заменить дату 2023-01-01 00:00:00 на актуальную дату, вычисленную как сегодня минус 180 дней.
Для автоматизации можно создать PHP-скрипт, который получит всех пользователей с датой последнего входа старше нужного срока и удалит их через функции WordPress.
Пример PHP-функции для удаления неактивных пользователей
Ниже пример функции, которую можно запускать по крону (WP-Cron) или вручную из админки:
function wpbono_delete_inactive_users($days = 180) {
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));
$args = [
'meta_key' => 'wpbono_last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<=',
'fields' => 'ID',
'number' => -1,
'exclude' => [1], // исключаем администратора с ID=1
];
$user_query = new WP_User_Query($args);
$users_to_delete = $user_query->get_results();
if (!empty($users_to_delete)) {
foreach ($users_to_delete as $user_id) {
wp_delete_user($user_id);
}
}
}
Для запуска функции можно использовать хук крон, например, раз в неделю:
if (!wp_next_scheduled('wpbono_weekly_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpbono_weekly_cleanup');
}
add_action('wpbono_weekly_cleanup', function() {
wpbono_delete_inactive_users(180);
});
Использование плагинов для автоматического удаления неактивных пользователей
Если не хотите писать код, можно воспользоваться готовыми плагинами. Например:
- Inactive User Deleter — плагин позволяет настроить удаление пользователей, которые не заходили на сайт за определенный период.
- WP Bulk Delete — универсальный инструмент для массового удаления записей и пользователей с фильтрами.
Эти плагины имеют удобные интерфейсы для настройки и могут запускаться по расписанию.
Как избежать случайного удаления важных пользователей
Очень важно не удалять администраторов и других ключевых пользователей. В приведенном коде мы исключили пользователя с ID=1, но на вашем сайте может быть несколько админов.
Рекомендуется добавить проверку ролей перед удалением:
$user = get_userdata($user_id);
if (in_array('administrator', $user->roles)) {
continue; // пропускаем админов
}
Интеграция с плагином Clearfy Pro для безопасности и оптимизации
Плагин Clearfy Pro предлагает множество функций для оптимизации и безопасности WordPress, включая управление пользователями. Можно настроить автоматическое удаление неактивных аккаунтов и дополнительно усилить безопасность сайта.
Выводы и рекомендации по автоматизации удаления неактивных пользователей
Автоматическое удаление неактивных пользователей помогает поддерживать сайт в чистоте, повышать безопасность и оптимизировать производительность. Для реализации нужно:
- Добавить сохранение даты последнего входа;
- Определить критерий неактивности;
- Создать функцию удаления с учетом ролей;
- Настроить запуск по расписанию с WP-Cron или WP-CLI;
- Рассмотреть использование готовых плагинов для удобства.
Такой подход подойдет как для небольших блогов, так и для крупных порталов с тысячами пользователей.