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

Диагностика проблемы: почему в WooCommerce появляются пустые категории

Пустые категории WooCommerce — это категории товаров, в которых нет ни одного опубликованного товара. Они появляются по разным причинам: удаление товаров без очистки категорий, импорт с ошибками, тестирование новых категорий, либо автоматические скрипты, создающие категории с ошибками. Наличие таких категорий мешает навигации и ухудшает SEO.

Как проверить пустоту категорий вручную и программно

  • В админке WordPress перейдите в Товары – Категории и обратите внимание на столбец «Количество товаров». Пустые категории будут показывать 0.
  • Чтобы проверить программно, используйте WP-CLI команду:
wp term list product_cat --field=term_id --format=csv | xargs -I % wp term meta get % product_count

Значение product_count показывает количество товаров в категории. Можно написать более сложный скрипт, чтобы вывести все категории с нулём товаров.

Пошаговое удаление пустых категорий через functions.php

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

function delete_empty_woocommerce_categories() {
    // Получаем все категории товаров
    $args = array(
        'taxonomy'   => 'product_cat',
        'hide_empty' => false, // Получать все, даже пустые
    );
    $categories = get_terms( $args );
    if ( empty( $categories ) || is_wp_error( $categories ) ) {
        return;
    }
    foreach ( $categories as $category ) {
        // Если товаров в категории 0 - удаляем
        if ( $category->count == 0 ) {
            wp_delete_term( $category->term_id, 'product_cat' );
        }
    }
}
// Запускаем функцию один раз при активации темы или вручную
// delete_empty_woocommerce_categories();

Внимание: Уберите комментарий с вызова функции, запустите один раз, затем удалите вызов, чтобы не удалить категории повторно.

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

Для тех, кто имеет доступ к терминалу сервера и WP-CLI, можно удалить пустые категории командой:

wp term list product_cat --field=term_id --format=csv | xargs -I % bash -c 'count=$(wp term get % --field=count --taxonomy=product_cat); if [ "$count" -eq 0 ]; then wp term delete product_cat %; fi'

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

Чтобы убедиться, что пустые категории удалены, выполните:

  • Перейдите в админку WooCommerce → Категории, проверьте, что количество категорий с 0 товарами отсутствует.
  • Программно можно повторно выполнить код получения категорий с count == 0 — список должен быть пуст.

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

  • Ошибка: Категории не удаляются, хотя count == 0.
    Причина: Категории могут содержать скрытые/черновые товары, либо они связаны с другими терминами.
    Решение: Проверьте, что у категории действительно нет опубликованных товаров. Используйте фильтр по статусу товара в WP_Query.
  • Ошибка: Удаляются нужные категории.
    Причина: Неверная логика определения пустоты.
    Решение: Для точности можно проверять товары именно с опубликованным статусом:
function is_category_empty( $term_id ) {
    $query = new WP_Query( array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'field'    => 'term_id',
                'terms'    => $term_id,
            ),
        ),
        'fields' => 'ids',
        'posts_per_page' => 1,
    ) );
    return ( $query->found_posts == 0 );
}

Далее используйте эту функцию перед удалением.

  • Ошибка: Удаление категорий вызывает сбои или ошибки в админке.
    Решение: Сделайте резервную копию базы данных перед выполнением удаления.
  • Практические советы по безопасности и производительности

    • Перед массовым удалением категорий всегда делайте резервную копию базы.
    • Запускайте код удаления вручную и однократно, чтобы избежать случайного удаления.
    • Если на сайте много категорий, для удаления используйте WP-CLI — это эффективнее и безопаснее.
    • Для улучшения SEO, после удаления категорий настройте редиректы со старых URL или очистите кэш.

    Сравнение методов удаления пустых категорий WooCommerce

    МетодПреимуществаНедостаткиРекомендуется для
    Код в functions.phpПрямо в WordPress, без доп. инструментовНужно вручную запускать, риск ошибкиМалые сайты, девелоперы с доступом к коду
    WP-CLIБыстро, можно скриптовать, безопасно для больших сайтовТребует доступа к серверу и навыков CLIСредние и крупные проекты, автоматизация
    ПлагиныПростота использования, интерфейсНагрузка, возможно избыточный функционалНовички, администраторы без доступа к коду
    Как изменить и добавить поля в форму регистрации WordPress
    03.04.2026
    Оптимизация базы данных WordPress: как ускорить сайт и уменьшить нагрузку
    20.11.2025
    Как избежать проблем с неотображением шаблонов WordPress при использовании Child Theme
    24.02.2026
    Как удалить ненужные стили и скрипты в WordPress для ускорения сайта
    30.11.2025
    Как избежать повторов товаров и ошибок в WooCommerce: практическое руководство
    25.05.2026