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

|

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

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

Чтобы проверить наличие пустых категорий, можно воспользоваться SQL-запросом к базе данных или написать простой код в functions.php, который выведет список таких категорий.

function wpb_list_empty_product_categories() {
    $args = array(
        'taxonomy' => 'product_cat',
        'hide_empty' => true,
    );
    $all_cats = get_terms($args);

    $empty_cats = array();
    $all_cats_all = get_terms(array('taxonomy' => 'product_cat', 'hide_empty' => false));

    foreach($all_cats_all as $cat) {
        if (!in_array($cat, $all_cats)) {
            $empty_cats[] = $cat->name . ' (ID: ' . $cat->term_id . ')';
        }
    }
    if (!empty($empty_cats)) {
        echo '<pre>Пустые категории WooCommerce:\n' . implode("\n", $empty_cats) . '</pre>';
    } else {
        echo '<p>Пустых категорий не найдено.</p>';
    }
}
add_action('admin_notices', 'wpb_list_empty_product_categories');

Добавьте этот код в functions.php вашей темы и зайдите в админку — вверху появится список пустых категорий.

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

Удалять категории вручную неудобно, особенно если их много. Ниже пример функции, которая удалит все пустые категории WooCommerce по крону или вручную.

function wpb_delete_empty_product_categories() {
    $empty_cats = get_terms(array(
        'taxonomy' => 'product_cat',
        'hide_empty' => true,
        'fields' => 'ids',
        'meta_query' => array(),
    ));

    // Получаем все категории, включая пустые
    $all_cats = get_terms(array('taxonomy' => 'product_cat', 'hide_empty' => false, 'fields' => 'ids'));

    // Определяем пустые категории
    $empty_cat_ids = array_diff($all_cats, $empty_cats);

    foreach ($empty_cat_ids as $cat_id) {
        wp_delete_term($cat_id, 'product_cat');
    }
}

// Запуск функции вручную
add_action('admin_init', function() {
    if (isset($_GET['delete_empty_cats']) && current_user_can('manage_woocommerce')) {
        wpb_delete_empty_product_categories();
        wp_safe_redirect(admin_url());
        exit;
    }
});

Чтобы запустить удаление, перейдите в админку WordPress и добавьте в адресную строку ?delete_empty_cats=1. Например: https://example.com/wp-admin/?delete_empty_cats=1.

Автоматизация через WP-Cron

Чтобы регулярно очищать пустые категории, добавьте в functions.php следующий код:

if (!wp_next_scheduled('wpb_cron_delete_empty_cats')) {
    wp_schedule_event(time(), 'daily', 'wpb_cron_delete_empty_cats');
}
add_action('wpb_cron_delete_empty_cats', 'wpb_delete_empty_product_categories');

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

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

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

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

МетодПлюсыМинусы
Ручное удаление через админкуПростота, контрольМного времени при большом количестве, риск пропустить
Плагин очистки (например, WP Sweep)Удобство, дополнительные функции очисткиЗависимость от стороннего кода, возможна избыточность
Кодовое решение (как в статье)Гибкость, автоматизация, без лишних плагиновНеобходимость навыков, ответственность за код
Как автоматизировать отправку новых заказов WooCommerce в WhatsApp
10.05.2026
Как удалить старые ревизии записей в WordPress для оптимизации базы данных
16.02.2026
Как автоматизировать обновление цен в WooCommerce по расписанию
26.04.2026
Оптимизация кода и загрузки в WordPress для бизнес-сайтов
09.11.2025
Как использовать REST API WooCommerce для автоматизации обработки заказов
30.04.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙