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

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

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

Чтобы проверить, есть ли неиспользуемые категории, зайдите в Товары > Категории и посмотрите число товаров напротив каждой категории. Если число равно нулю — категория пустая и скорее всего не нужна.

Пошаговое решение: удаляем категории без товаров через код

1. Создаем резервную копию базы данных

Перед изменениями в базе данных сделайте резервную копию. Это позволит восстановить данные при ошибках.

2. Создаем и запускаем PHP-скрипт для удаления пустых категорий

Добавьте следующий код в файл functions.php вашей активной темы или в отдельный файл, который можно запустить один раз (например, через WP-CLI или подключение через админку):

function delete_empty_woocommerce_categories() {
    $args = array(
        'taxonomy' => 'product_cat',
        'hide_empty' => false,
    );
    $categories = get_terms($args);

    foreach ($categories as $category) {
        if ($category->count == 0) {
            wp_delete_term($category->term_id, 'product_cat');
            error_log('Удалена пустая категория: ' . $category->name);
        }
    }
}
add_action('admin_init', 'delete_empty_woocommerce_categories');

Этот код при заходе в админку удалит все категории товаров, у которых нет товаров (count == 0).

3. Удаляем код после выполнения

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

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

  • Перейдите в Товары > Категории и убедитесь, что пустых категорий больше нет.
  • Проверьте логи ошибок сервера (если включено), чтобы увидеть сообщения об удалённых категориях.
  • Проверьте фронтенд сайта — страницы категорий с товарами должны отображаться корректно, а неиспользуемых категорий не должно быть.

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

  • Категории не удаляются: возможно, функция запускается не в нужном месте или в неправильном хуке. Используйте admin_init или запустите через WP-CLI.
  • Удаляются нужные категории: проверьте, что условие $category->count == 0 работает корректно — категория должна быть пустой.
  • Ошибка базы данных: проверьте права пользователя БД и наличие term_id у категорий.
  • Категории возвращаются после кэширования: очистите кэш сайта и плагинов кэширования.

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

  • Запускайте удаление в часы низкой нагрузки, чтобы избежать задержек.
  • Всегда делайте резервную копию базы данных до изменений.
  • Удаляйте код удаления сразу после успешного выполнения, чтобы не запускать его каждый раз.
  • Если у вас много категорий, делайте удаление пакетами, чтобы не перегружать сервер.

Альтернативные варианты удаления пустых категорий

МетодПлюсыМинусы
Код через functions.phpБыстро, без плагинов, точечноеНужно знать PHP, риск ошибок при неправильном коде
WP-CLI командаЭффективно на больших сайтах, без нагрузки на веб-серверТребуются права SSH и знания CLI
Плагины очистки базыУдобно, интерфейс для выбора категорийДополнительная нагрузка, риски совместимости
Как отключить AJAX пагинацию в WordPress без плагинов
21.12.2025
Как отключить Emoji в WordPress эффективно и без плагинов
14.03.2026
Как использовать хук pre_get_posts для фильтрации товаров в WooCommerce
21.01.2026
Как изменить размер изображений в WordPress без потери качества
08.02.2026
Как создать управляемую форму обратной связи в WordPress без плагинов
02.04.2026