WooCommerce: автоматическое удаление неактивных вариаций товаров

Диагностика проблемы неактивных вариаций в WooCommerce

Владельцы интернет-магазинов на WooCommerce часто сталкиваются с проблемой, когда в каталоге остаются вариации товаров, которые больше не используются или неактивны. Такие вариации могут занимать место в базе данных, замедлять работу сайта и создавать путаницу в админке и на фронтенде.

Определить наличие неактивных вариаций можно так:

  • Зайдите в админку WooCommerce > Товары > Вариации.
  • Обратите внимание на варианты, у которых статус "черновик" или "отключено".
  • Проверьте вариации с нулевым количеством на складе и неактивным статусом.

Если таких вариаций много, возникает задача автоматизировать их удаление, чтобы не делать это вручную.

Пошаговое решение: удаление неактивных вариаций по дате и статусу

В WooCommerce вариации — это дочерние продукты с типом product_variation. Для удаления неактивных вариаций можно написать кастомный скрипт, который будет выполняться по Cron и удалять вариации с определёнными условиями (например, статус "черновик" и дата последнего изменения больше 30 дней назад).

Код для автоматического удаления неактивных вариаций

function wc_delete_inactive_variations() {
    $args = array(
        'post_type'      => 'product_variation',
        'post_status'    => 'draft', // или 'private', если используются
        'date_query'     => array(
            array(
                'before'    => '30 days ago',
                'inclusive' => true,
            ),
        ),
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );

    $variations = get_posts($args);
    if (empty($variations)) {
        return;
    }

    foreach ($variations as $variation_id) {
        wp_delete_post($variation_id, true); // true для полного удаления
    }
}

// Пример подключения к Cron (раз в день)
add_action('wc_daily_clean_variations', 'wc_delete_inactive_variations');

if (!wp_next_scheduled('wc_daily_clean_variations')) {
    wp_schedule_event(time(), 'daily', 'wc_daily_clean_variations');
}

Этот код удалит все вариации со статусом "черновик", которые не обновлялись последние 30 дней. При необходимости можно скорректировать статус и временной период.

Как проверить, что удаление сработало

  • Перед запуском сделайте резервную копию базы данных.
  • В админке WooCommerce проверьте список вариаций — неактивные вариации должны исчезнуть.
  • Проверьте в базе данных таблицу wp_posts, убедитесь, что записи с типом product_variation и статусом draft отстутствуют за последние 30 дней.
  • Можно добавить логирование в функцию, например, записывать ID удалённых вариаций в файл для аудита.

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

  • Неверный статус вариаций в запросе: иногда вариации могут иметь статусы private или даже publish. Проверьте статусы в вашей базе и скорректируйте аргумент post_status.
  • Отсутствие Cron задачи: убедитесь, что WordPress Cron работает на вашем сайте. Для проверки можно использовать плагин WP Crontrol.
  • Удаление нужных вариаций: всегда сначала тестируйте на копии сайта, чтобы не удалить активные товары.
  • Проблемы с правами: скрипт должен запускаться с правами администратора; убедитесь, что код добавлен в functions.php темы или в отдельный плагин с правильными правами.

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

  • Удаление большого количества вариаций за один раз может нагружать сервер. Разбейте удаление на порции, например, по 50 вариаций за один прогон.
  • Используйте WP-CLI для разовой массовой очистки, если доступен SSH: wp post delete $(wp post list --post_type=product_variation --post_status=draft --field=ID) --force.
  • Резервное копирование перед удалением обязательно, особенно в продакшене.
  • Для контроля используйте логирование: добавьте запись в файл или системный лог после каждого удаления.

Сравнение вариантов удаления неактивных вариаций

МетодПреимуществаНедостатки
Ручное удаление в админкеПростота, нет кодаТрудоёмко, риск пропустить вариации
Плагин для очистки WooCommerceУдобство, дополнительные функцииМожет замедлять сайт, платные версии
Кастомный скрипт с CronПолный контроль, автоматизацияТребует навыков программирования
WP-CLIОчень быстро и эффективноНужен доступ к серверу и опыт работы с CLI
Отзывы с автотрансляцией на сайт WordPress: практическое руководство
12.04.2026
Как отключить автоматические обновления в WordPress: подробное руководство
24.02.2026
WooCommerce: как автоматически удалять заказы по статусу и дате без плагинов
02.05.2026
WooCommerce: автоматическое удаление неактивных вариаций товаров
31.05.2026
Как создать свой shortcode в WordPress
01.11.2025