Удаление неактивных пользователей WordPress по дате регистрации

В крупных и активно развивающихся проектах на WordPress часто накапливается большое количество пользователей, которые зарегистрировались, но так и не проявили активность. Это может создавать нагрузку на базу данных и усложнять администрирование сайта. В этой статье рассмотрим, как автоматически удалять неактивных пользователей по дате регистрации, используя кастомный код и плагины, а также как обезопасить этот процесс.

Почему важно удалять неактивных пользователей WordPress

Неактивные пользователи — это те, кто зарегистрировался, но не заходили на сайт длительное время или не совершали никаких действий. Их накопление приводит к следующим проблемам:

  • Увеличение размера базы данных и замедление работы сайта.
  • Риск безопасности — старые учетные записи могут быть взломаны.
  • Сложности при управлении пользователями и рассылками.

Поэтому периодическая очистка базы пользователей повышает производительность и безопасность.

Как определить неактивных пользователей по дате регистрации

Для начала нам нужно определить критерии неактивности. Чаще всего — это пользователи, которые не заходили на сайт более 6 месяцев или 1 года с момента регистрации.

В WordPress дата регистрации хранится в таблице wp_users в поле user_registered. Чтобы найти таких пользователей, можно использовать SQL-запрос:

SELECT ID, user_login, user_registered FROM wp_users WHERE user_registered < DATE_SUB(NOW(), INTERVAL 1 YEAR);

Однако для удаления пользователей лучше использовать PHP и WP функции, чтобы корректно удалить все связанные с пользователем данные.

Пример функции для удаления неактивных пользователей по дате регистрации

Ниже приведён пример функции для wpquery, которая автоматически удаляет пользователей, зарегистрированных более года назад, и не заходивших на сайт (отслеживаем через мета-поле).

function wpquery_delete_inactive_users_by_registration_date() {
    global $wpdb;
    
    $date_threshold = date('Y-m-d H:i:s', strtotime('-1 year'));
    
    // Получаем пользователей, зарегистрированных более года назад
    $user_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->users} WHERE user_registered < %s",
        $date_threshold
    ));

    foreach ($user_ids as $user_id) {
        // Проверяем дату последнего входа (если хранится в мета, например, 'last_login')
        $last_login = get_user_meta($user_id, 'last_login', true);
        if (!$last_login) {
            // Если нет данных о последнем входе, считаем пользователя неактивным
            require_once ABSPATH . 'wp-admin/includes/user.php';
            wp_delete_user($user_id);
        } else {
            // Если последний вход был больше года назад — удаляем
            if (strtotime($last_login) < strtotime('-1 year')) {
                require_once ABSPATH . 'wp-admin/includes/user.php';
                wp_delete_user($user_id);
            }
        }
    }
}

// Запуск функции раз в сутки через крон
if (!wp_next_scheduled('wpquery_daily_delete_inactive_users')) {
    wp_schedule_event(time(), 'daily', 'wpquery_daily_delete_inactive_users');
}
add_action('wpquery_daily_delete_inactive_users', 'wpquery_delete_inactive_users_by_registration_date');

В этом примере функция ищет пользователей по дате регистрации, затем проверяет последний вход (если мета-данные last_login не установлены, пользователь считается неактивным). Функция подключает стандартный WordPress-инструментарий для удаления пользователя, чтобы корректно очистить все связи.

Как автоматически отслеживать дату последнего входа пользователя

WordPress по умолчанию не хранит дату последнего входа, но её можно сохранять с помощью плагинов или собственного кода. Например, добавим хук для записи даты каждого входа в мета-поле:

function wpquery_save_last_login($login, $user) {
    update_user_meta($user->ID, 'last_login', current_time('mysql'));
}
add_action('wp_login', 'wpquery_save_last_login', 10, 2);

Этот код сохраняет дату и время последнего входа пользователя в мета-данные с ключом last_login. После этого функция удаления сможет использовать эти данные для оценки активности.

Использование плагинов для удаления неактивных пользователей

Если вы предпочитаете готовые решения, можно использовать плагины. Среди популярных:

  • Inactive User Deleter — позволяет удалять пользователей по дате последнего входа.
  • Delete Inactive Users — автоматизирует удаление пользователей, неактивных в заданный период.

Для интеграции с WPShop можно рассмотреть использование плагина Clearfy Pro, который включает функции оптимизации безопасности и может помочь с управлением пользователями. Подробнее: Clearfy Pro на WPShop.

Рекомендации по безопасности при удалении пользователей

При автоматическом удалении пользователей обязательно учитывайте:

  • Делайте резервные копии базы данных перед запуском скриптов.
  • Уведомляйте пользователей о предстоящем удалении (например, за 2 недели).
  • Исключайте из удаления администраторов и важных ролей.
  • Тестируйте на тестовом сайте перед запуском на боевом.

Например, чтобы исключить администраторов, добавьте проверку роли перед удалением:

$user_info = get_userdata($user_id);
if (in_array('administrator', $user_info->roles)) {
    continue; // пропускаем администратора
}

Заключение по теме удаления неактивных пользователей

Удаление неактивных пользователей по дате регистрации — важная задача для поддержания производительности и безопасности сайта на WordPress. Используя приведённый код и рекомендации, вы сможете автоматизировать этот процесс в удобном для вас формате. При необходимости комбинируйте кастомные решения с надёжными плагинами из каталога WordPress или от WPShop.

Автоматизация работы с фильтром запросов в WordPress
28.11.2025
Использование мета-запросов для оптимизации выполнения запросов WordPress
16.12.2025
Как создать динамическую пагинацию WordPress с использованием AJAX
25.12.2025
WooCommerce: автоматическое изменение статуса заказа по успешному платежу
29.04.2026
WooCommerce: как автоматически очищать корзину после отмены заказа
29.05.2026