Автоматическое удаление неактивных пользователей в WooCommerce

|

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

Неактивные пользователи, которые долго не заходили в магазин или не совершали покупок, занимают место в базе данных, что может замедлять работу сайта и усложнять управление клиентской базой. Автоматическое удаление таких пользователей помогает поддерживать базу в актуальном состоянии и снижать нагрузку на сервер.

Диагностика проблемы: как определить неактивных пользователей

Для начала нужно понять, кто считается «неактивным». Обычно это пользователи, которые не авторизовались и не делали заказов за определённый период (например, 6 месяцев). Чтобы проверить, есть ли такие пользователи, выполните SQL-запрос через phpMyAdmin или WP-CLI:

SELECT ID, user_login, user_email, user_registered FROM wp_users WHERE ID NOT IN (SELECT user_id FROM wp_wc_customer_lookup) OR user_registered < NOW() - INTERVAL 6 MONTH;

Этот запрос показывает пользователей, у которых нет заказов, или которые зарегистрированы более 6 месяцев назад. Если таких много, стоит автоматизировать удаление.

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

Добавьте следующий код в файл functions.php вашей дочерней темы или создайте отдельный плагин. Скрипт удалит пользователей, которые не заходили и не делали заказов более 180 дней.

function wc_auto_delete_inactive_users() {
    $days_inactive = 180; // Период неактивности в днях
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days'));

    // Получаем ID пользователей с заказами
    global $wpdb;
    $users_with_orders = $wpdb->get_col("SELECT DISTINCT user_id FROM {$wpdb->prefix}wc_orders WHERE user_id > 0");

    // Получаем пользователей без заказов и неактивных
    $args = array(
        'meta_query' => array(),
        'date_query' => array(
            'before' => $date_threshold
        ),
        'exclude' => $users_with_orders,
        'fields' => 'ID',
        'number' => -1
    );
    $user_query = new WP_User_Query($args);
    $inactive_users = $user_query->get_results();

    if (!empty($inactive_users)) {
        foreach ($inactive_users as $user_id) {
            require_once(ABSPATH . 'wp-admin/includes/user.php');
            wp_delete_user($user_id);
        }
    }
}

// Запускаем функцию раз в сутки
if (!wp_next_scheduled('wc_auto_delete_inactive_users_hook')) {
    wp_schedule_event(time(), 'daily', 'wc_auto_delete_inactive_users_hook');
}
add_action('wc_auto_delete_inactive_users_hook', 'wc_auto_delete_inactive_users');

Объяснение:

Проверка результата после внедрения

Для проверки корректности работы скрипта:

  1. Вручную создайте тестового пользователя с датой регистрации более 180 дней назад и без заказов.
  2. Запустите планировщик задач вручную:
do_action('wc_auto_delete_inactive_users_hook');

В админке WordPress убедитесь, что пользователь удалён.

  1. Проверьте логи сервера и WordPress на ошибки.
  2. Убедитесь, что пользователи с заказами не удалились.

Частые ошибки и как их исправить

$users_with_orders = $wpdb->get_col(
    "SELECT DISTINCT post_author FROM {$wpdb->prefix}posts WHERE post_type = 'shop_order' AND post_status IN ('wc-completed', 'wc-processing')"
);

Практические советы по безопасности и производительности

Сравнение способов автоматического удаления пользователей WooCommerce

МетодПлюсыМинусыКомпромисс
Плагин (например, WP Bulk Delete)Простота настройки, интерфейсЧасто платные функции, нагрузкаИспользовать для небольших сайтов
Собственный код с WP-CronПолный контроль, бесплатностьТребует навыков, тестированияОптимизация и логирование обязательны
Внешний системный cron + WP-CLIНадежность, минимальная нагрузкаТребуется доступ к серверуЛучше для больших проектов
Как использовать хуки в WordPress для автоматизации задач
26.11.2025
Как добавить уникальные карты в WordPress с применением Yelly
08.03.2026
Как создать уникальные URL для товаров в WooCommerce: практические решения
09.01.2026
Как создать автоматические уведомления в WordPress с помощью WPRemark
16.04.2026
Как создать свой шорткод в WordPress: практические примеры и советы
01.11.2025
×
до 3225₽

WPShop - честная партнерка!

Зарабатывай с каждой продажи

Подключиться ⋙