В крупных и активно развивающихся проектах на WordPress нередко возникает проблема с накоплением большого количества неактивных пользователей. Это могут быть зарегистрированные, но давно не посещавшие сайт аккаунты, которые засоряют базу данных и потенциально создают риски для безопасности. Автоматическое удаление таких пользователей позволяет поддерживать чистоту базы, снижать нагрузку и улучшать безопасность.
Почему важно удалять неактивных пользователей WordPress
С течением времени количество зарегистрированных пользователей на сайте может значительно вырасти, но далеко не все из них остаются активными. Неактивные пользователи — это аккаунты, которые не выполняют вход в систему длительное время, например, несколько месяцев или лет. Их наличие ведёт к нескольким проблемам:
- Перегрузка базы данных: Чем больше пользователей, тем тяжелее выполнять запросы, особенно при большом количестве метаданных и пользовательских полей.
- Безопасность: Заброшенные аккаунты могут быть взломаны злоумышленниками и использованы для вредоносной деятельности.
- Административная нагрузка: Управлять большим количеством пользователей сложнее, особенно при проведении рассылок и анализе аудитории.
Поэтому регулярная очистка пользователей, которые не проявляли активность, — отличный способ поддерживать сайт в порядке.
Как определить неактивных пользователей WordPress
Для автоматического удаления важно сначала определить критерии неактивности. Самый точный способ — смотреть на дату последнего входа пользователя на сайт. К сожалению, в стандартной установке WordPress эта дата не хранится в базе по умолчанию.
Чтобы отслеживать дату последнего логина, можно использовать плагины или добавить собственный код, который будет сохранять эту информацию.
Пример кода для сохранения даты последнего входа
Добавьте в functions.php вашей темы или в свой плагин следующий код:
function wpmy_update_last_login( $login, $user ) {
update_user_meta( $user->ID, 'wpmy_last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpmy_update_last_login', 10, 2 );Этот хук wp_login срабатывает при успешном входе пользователя и записывает текущую дату и время в метаполе wpmy_last_login.
Автоматическое удаление неактивных пользователей по дате последнего логина
Теперь, когда у нас есть дата последнего входа, можно написать функцию, которая будет искать пользователей, не заходивших, например, более 180 дней, и удалять их.
Пример функции удаления неактивных пользователей
function wpmy_delete_inactive_users() {
$days_inactive = 180; // количество дней неактивности
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days'));
$args = array(
'meta_key' => 'wpmy_last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<',
'fields' => 'ID',
'number' => 100,
);
$inactive_users = get_users($args);
foreach($inactive_users as $user_id) {
// Можно добавить исключения, например, не удалять администраторов
$user = get_userdata($user_id);
if (in_array('administrator', $user->roles)) {
continue;
}
wp_delete_user($user_id);
}
}Эту функцию можно запускать по расписанию с помощью WP-Cron, чтобы автоматизировать процесс.
Настройка WP-Cron для автоматического запуска
Добавьте следующий код для регистрации задачи:
function wpmy_schedule_user_cleanup() {
if (!wp_next_scheduled('wpmy_daily_user_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpmy_daily_user_cleanup');
}
}
add_action('wp', 'wpmy_schedule_user_cleanup');
add_action('wpmy_daily_user_cleanup', 'wpmy_delete_inactive_users');Этот код запускает функцию удаления раз в сутки, что достаточно для большинства сайтов.
Плагины для отслеживания активности пользователей
Если вы не хотите писать код вручную, можно использовать готовые плагины. Например:
- User Last Login — плагин, который автоматически сохраняет дату последнего входа пользователя.
- Clearfy Pro — комплексное решение для оптимизации WordPress, в котором есть инструменты для управления пользователями и очистки базы.
Дополнительные советы по безопасности и оптимизации
При автоматическом удалении пользователей стоит учитывать несколько важных моментов:
- Обязательно делайте резервное копирование базы перед выполнением массовых операций.
- Не удаляйте пользователей с особыми ролями — администраторов, редакторов.
- Если у пользователя есть связанные данные (например, публикации), подумайте, что с ними делать при удалении — можно переназначить их другому автору.
- Проверяйте логи и уведомления, чтобы не потерять важных пользователей по ошибке.
Автоматизация удаления неактивных пользователей поможет поддерживать сайт WordPress в чистоте и безопасности без лишних затрат времени.
Для расширенных возможностей по управлению пользователями и оптимизации сайта рекомендуем ознакомиться с Clearfy Pro — плагином, который упрощает работу с большим числом пользователей и улучшает производительность.