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

|

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

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

Чтобы убедиться, что у вас есть неиспользуемые вариации, выполните SQL-запрос к базе данных, например:

SELECT p.ID, p.post_title, p.post_parent FROM wp_posts p WHERE p.post_type = 'product_variation' AND p.post_status = 'publish';

Затем сравните с активными вариациями в админке WooCommerce, чтобы выявить лишние.

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

1. Резервное копирование

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

2. Подключение к WordPress и создание скрипта удаления

Создайте PHP-файл внутри темы или используйте functions.php, чтобы запустить скрипт удаления. Пример кода:

function delete_unused_variations( $parent_product_id, $variations_to_delete ) {
    foreach ( $variations_to_delete as $variation_id ) {
        $variation = wc_get_product( $variation_id );
        if ( $variation && $variation->get_parent_id() == $parent_product_id ) {
            wp_delete_post( $variation_id, true );
        }
    }
}

// Пример вызова функции
$parent_id = 123; // ID родительского вариативного товара
$to_delete = array(456, 457); // ID вариаций, которые нужно удалить
delete_unused_variations($parent_id, $to_delete);

Этот код удаляет вариации по ID, принадлежащие указанному товару.

3. Автоматизация поиска и удаления неиспользуемых вариаций

Если известно условие, по которому вариации считаются неиспользуемыми (например, по атрибутам или метаданным), можно автоматизировать через WP_Query:

$args = [
    'post_type' => 'product_variation',
    'posts_per_page' => -1,
    'meta_query' => [
        [
            'key' => 'attribute_pa_color',
            'value' => 'old-color',
            'compare' => '=',
        ],
    ],
];
$query = new WP_Query($args);
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        wp_delete_post(get_the_ID(), true);
    }
}
wp_reset_postdata();

В примере удаляются все вариации с цветом old-color.

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

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

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

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

МетодПреимуществаНедостатки
Ручное удаление через админку WooCommerce Просто, без навыков программирования Медленно при большом количестве вариаций
Код на PHP с WP_Query и wp_delete_post Автоматизация, гибкость, можно скриптовать Требует навыков кода, риск ошибок при неправильном условии
WP-CLI команды Быстро, серверный уровень, можно запускать по расписанию Требуется доступ к консоли сервера
Как добавить уникальные карты в WordPress с применением Yelly
08.03.2026
Как отключить автозапуск видео в WooCommerce: практическое решение
29.04.2026
Как удалить соседние символы в URL WordPress для улучшения SEO и удобства
16.01.2026
Как создать уникальные метаполя для постов в WordPress: практические примеры и код
24.01.2026
Как использовать WPRemark для автоматических отзывов в WordPress: подробное руководство
21.03.2026
×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙