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

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

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

Типичные признаки проблемы:

  • В списке вариативов товара отображаются опции, которые не актуальны;
  • При создании вариаций предлагаются устаревшие атрибуты;
  • В базе данных остаются записи term_taxonomy и termmeta для неиспользуемых вариаций;
  • Производительность админки падает из-за большого количества вариантов.

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

Шаг 1. Выявление неиспользуемых вариативов

Неиспользуемые вариативы — это атрибуты, которые не связаны ни с одним опубликованным товаром. Для их поиска удобно использовать запрос к базе данных, но для автоматизации применим PHP-код с использованием WP_Query и WooCommerce функций.

Шаг 2. Код для удаления неиспользуемых термов атрибутов

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

function wc_remove_unused_product_variations() {
    $attribute_taxonomies = wc_get_attribute_taxonomies();
    if ( ! $attribute_taxonomies ) {
        return;
    }

    foreach ( $attribute_taxonomies as $attribute ) {
        $taxonomy = wc_attribute_taxonomy_name( $attribute->attribute_name );
        $terms = get_terms( array(
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
        ) );

        foreach ( $terms as $term ) {
            $args = array(
                'post_type' => 'product',
                'post_status' => 'publish',
                'posts_per_page' => 1,
                'tax_query' => array(
                    array(
                        'taxonomy' => $taxonomy,
                        'field' => 'slug',
                        'terms' => $term->slug,
                    ),
                ),
            );
            $query = new WP_Query( $args );
            if ( ! $query->have_posts() ) {
                wp_delete_term( $term->term_id, $taxonomy );
            }
            wp_reset_postdata();
        }
    }
}
add_action( 'init', 'wc_remove_unused_product_variations' );

Этот код при каждом запуске инициализации WordPress проверяет все атрибуты и удаляет термы без привязанных товаров.

Шаг 3. Запуск и проверка

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

add_action('admin_init', function() {
    wc_remove_unused_product_variations();
});

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

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

  • В админке WooCommerce на странице редактирования товаров проверьте список вариативов — устаревшие должны исчезнуть.
  • В разделе «Атрибуты» в WooCommerce убедитесь, что неиспользуемые термы удалены.
  • В базе данных таблицы wp_terms и wp_term_taxonomy проверьте отсутствие удалённых терминов.
  • Производительность страницы редактирования товаров должна улучшиться.

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

  • Удаление активных термов: если терм используется в опубликованном товаре, он не удалится. Если удаляется, проверьте кэш и правильность условий запроса.
  • Код не запускается: убедитесь, что файл functions.php загружается, нет синтаксических ошибок.
  • Проблемы с кэшированием: если вы используете плагин кэширования, очистите кэш после удаления вариативов.
  • Удаляются нужные вариативы: сделайте бэкап базы перед запуском, добавьте логирование удалённых терминов для контроля.

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

  • Запускайте удаление неиспользуемых вариативов на тестовой копии сайта перед продакшеном.
  • Добавьте возможность запуска кода вручную через WP-CLI или админку для контроля.
  • Используйте транзиенты или расписание WP-Cron для периодической очистки (например, раз в неделю).
  • Оптимизируйте базу данных после удаления с помощью плагинов типа Clearfy для удаления мусора и улучшения быстродействия.

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

МетодПлюсыМинусыКогда использовать
Ручное удаление в админкеПросто, не требует кодаДолго на больших магазинах, риск пропуститьМаленькие магазины
Автоматический PHP-скрипт (код)Полная автоматизация, экономия времениТребует навыков, риск ошибокСредние и крупные магазины
Плагины оптимизации (Clearfy и др.)Удобно, много функцийЗависимость от стороннего кодаДля комплексной оптимизации
Как автоматизировать удаление старого контента в WordPress
13.01.2026
Как создать автоматическую систему отзывов с подтверждением в WordPress
02.02.2026
Как установить ограничения на регистрацию в WordPress по домену e-mail
30.01.2026
Как использовать фильтры WooCommerce для автоматического изменения стоимости товаров
31.05.2026
Оценка и фильтровка комментариев в WordPress по ключевым словам
16.12.2025

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: