Как удалить неактивных пользователей в WooCommerce

Что значит неактивный пользователь в WooCommerce

Неактивные пользователи — это те, кто зарегистрировался в вашем интернет-магазине на базе WooCommerce, но не совершал покупок и не проявлял активности в течение длительного времени. Удаление таких пользователей помогает оптимизировать базу данных, снизить нагрузку и повысить безопасность.

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

Для начала нужно определить критерии неактивности. Обычно это:

  • Отсутствие заказов (post_type = shop_order) с user_id;
  • Дата регистрации более 6 месяцев назад;
  • Отсутствие активности в личном кабинете или комментариях.

Проверить количество таких пользователей можно SQL-запросом к базе данных:

SELECT ID, user_login, user_registered FROM wp_users u
LEFT JOIN wp_posts p ON u.ID = p.post_author AND p.post_type = 'shop_order'
WHERE p.ID IS NULL AND user_registered < DATE_SUB(NOW(), INTERVAL 6 MONTH);

Этот запрос вернёт список пользователей, которые не сделали заказ и зарегистрировались более полугода назад.

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

1. Резервное копирование базы данных

Перед удалением важно сделать полное резервное копирование базы данных, чтобы иметь возможность восстановить данные в случае ошибки.

2. Создание кастомного WP-CLI скрипта для удаления

Используем WP-CLI для безопасного массового удаления пользователей. Вот пример команды для удаления:

wp user delete $(wp user list --role=subscriber --field=ID --meta_key=last_order_date --meta_compare='<' --meta_value='2023-01-01' --format=csv) --yes
<

Но WooCommerce не хранит дату последнего заказа в usermeta по умолчанию, поэтому предварительно нужно добавить мета-ключ или использовать SQL для выборки ID пользователей.

3. PHP-скрипт для выборки и удаления

Пример кода для удаления пользователей без заказов и с датой регистрации старше 6 месяцев:

function delete_inactive_woocommerce_users() {
    global $wpdb;
    $date_limit = date('Y-m-d', strtotime('-6 months'));

    $user_ids = $wpdb->get_col( $wpdb->prepare(
        "SELECT u.ID FROM {$wpdb->users} u
        LEFT JOIN {$wpdb->prefix}posts p ON u.ID = p.post_author AND p.post_type = 'shop_order'
        WHERE p.ID IS NULL AND u.user_registered < %s",
        $date_limit
    ) );

    foreach ( $user_ids as $user_id ) {
        require_once( ABSPATH . 'wp-admin/includes/user.php' );
        wp_delete_user( $user_id );
    }
}
add_action('init', 'delete_inactive_woocommerce_users');

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

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

  • Выполните повторный SQL-запрос из раздела диагностики, чтобы убедиться, что пользователей с указанными критериями больше нет.
  • Проверьте раздел "Пользователи" в админке WooCommerce — количество подписчиков должно уменьшиться.
  • Обязательно проверьте работу сайта и доступ существующих пользователей.

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

  • Удаление активных пользователей: Неправильные критерии могут удалить клиентов с заказами. Решение — всегда проверять наличие заказов через post_type shop_order и post_author.
  • Удаление пользователей с ролью администратора или менеджера: Убедитесь, что фильтруете только нужные роли (например, subscriber).
  • Удаление пользователей без резервной копии: Всегда делайте бэкап базы перед массовыми операциями.
  • Скрипт удаляет пользователей при каждом запросе: Добавляйте проверку, чтобы скрипт срабатывал только один раз, например, по cron или вручную.

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

  • Используйте WP-CLI для массовых операций — это надежнее и быстрее, чем PHP-скрипты в браузере.
  • Ограничивайте выборку пользователей в пакетах по 50-100, чтобы не перегружать сервер.
  • Храните даты последней активности или последнего заказа в usermeta для быстрого доступа и фильтрации.
  • Используйте транзакции в базе данных, если работаете напрямую с SQL для удаления.

Сравнение способов удаления неактивных пользователей

МетодПлюсыМинусыРекомендации
WP-CLIБыстро, безопасно, можно запускать по cronТребуется доступ к серверуДля опытных администраторов
PHP-скрипт с хукомПрост в реализации, можно встроить в тему или плагинРиск перегрузки сервера, может срабатывать многократноИспользовать с проверками и отключать после выполнения
Плагины очистки пользователейУдобный интерфейс, дополнительные функцииМогут быть платными, влиять на производительностьПодходит для новичков
Как автоматически удалять неактивных пользователей в WordPress
16.03.2026
Как создать автоматический импорт продуктов в WordPress с помощью плагинов и кода
09.04.2026
Как создать автоматический отзыв в WordPress по рассылке
20.02.2026
Как отключить автоматическое изменение размера изображений в WooCommerce
13.05.2026
Как удалить автоматические картинки в WordPress
28.12.2025