Как автоматически удалять пустые категории в WordPress с помощью кода

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

Почему важно удалять пустые категории в WordPress

Пустые категории не несут никакой смысловой нагрузки и могут создавать путаницу в списках категорий на сайте. Кроме того, поисковые системы могут воспринимать такие категории как низкокачественные страницы, что снижает общий рейтинг сайта. Регулярное удаление пустых категорий помогает поддерживать чистоту структуры и улучшает производительность базы данных.

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

Как определить пустую категорию в WordPress

В WordPress категории хранятся как таксономия category, а количество записей в каждой категории доступно через параметр count. Если count равен 0, значит категория пустая.

Вы можете получить список всех категорий и проверить их количество записей через функцию get_categories() с нужными параметрами.

Пример функции для получения пустых категорий

function wp24_get_empty_categories() {
    $empty_cats = get_categories(array(
        'hide_empty' => true, // скрываем непустые
        'fields' => 'ids'       // получаем только ID
    ));
    // Для получения пустых нужно hide_empty=false и фильтрация по count=0
    $all_cats = get_categories(array('hide_empty' => false));

    $empty_ids = array();
    foreach ($all_cats as $cat) {
        if ($cat->count == 0) {
            $empty_ids[] = $cat->term_id;
        }
    }
    return $empty_ids;
}

Эта функция возвращает массив ID всех пустых категорий.

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

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

function wp24_delete_empty_categories() {
    $empty_cats = wp24_get_empty_categories();
    if (empty($empty_cats)) {
        return 'Пустых категорий не найдено';
    }
    foreach ($empty_cats as $cat_id) {
        wp_delete_term($cat_id, 'category');
    }
    return count($empty_cats) . ' пустых категорий удалено';
}

Вы можете вызвать функцию wp24_delete_empty_categories() для запуска удаления. Например, это можно сделать вручную через интерфейс или автоматически через WP-Cron.

Настройка автоматического запуска с помощью WP-Cron

Чтобы удалять пустые категории регулярно, например, раз в неделю, можно использовать планировщик задач WordPress — WP-Cron.

function wp24_schedule_empty_cat_cleanup() {
    if (!wp_next_scheduled('wp24_empty_cat_cleanup_hook')) {
        wp_schedule_event(time(), 'weekly', 'wp24_empty_cat_cleanup_hook');
    }
}
add_action('wp', 'wp24_schedule_empty_cat_cleanup');

add_action('wp24_empty_cat_cleanup_hook', 'wp24_delete_empty_categories');

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

Практические рекомендации и безопасность

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

Также можно добавить логирование удалений, чтобы отслеживать, какие категории были удалены и когда.

Пример расширенной функции с логированием

function wp24_delete_empty_categories_with_log() {
    $empty_cats = wp24_get_empty_categories();
    if (empty($empty_cats)) {
        error_log('[' . date('Y-m-d H:i:s') . '] Пустых категорий для удаления не найдено');
        return;
    }
    foreach ($empty_cats as $cat_id) {
        $cat = get_category($cat_id);
        if ($cat) {
            wp_delete_term($cat_id, 'category');
            error_log('[' . date('Y-m-d H:i:s') . '] Удалена пустая категория: ' . $cat->name . ' (ID: ' . $cat_id . ')');
        }
    }
}

Полезные плагины для работы с категориями в WordPress

Если вы предпочитаете использовать плагины, а не код, обратите внимание на:

  • Term Management Tools — позволяет массово удалять и сливать категории;
  • WP Bulk Delete — мощный плагин для массового удаления записей и таксономий, включая пустые категории;
  • Clearfy Pro — оптимизирует работу WordPress, в том числе позволяет управлять таксономиями и удалять ненужные элементы.

Подробный разбор и примеры настройки этих плагинов можно найти на wpshop.ru.

Заключение

Автоматическое удаление пустых категорий — важный шаг к поддержанию чистоты и оптимизации вашего сайта на WordPress. С помощью приведённого кода и рекомендаций вы сможете легко внедрить эту функциональность и избежать накопления мусора в базе данных. Используйте WP-Cron для регулярного запуска и не забывайте о резервных копиях.

Как автоматически удалить заказ в WooCommerce после оплаты
11.05.2026
Автоматическое удаление старых ревизий в WordPress для оптимизации базы данных
17.02.2026
Как добавить уникальные поля в форму регистрации WordPress с проверкой уникальности
24.02.2026
Как использовать хук woocommerce_checkout_update_order_review в WooCommerce
21.05.2026
Как удалить загрузку шаблонов Gutenberg в WordPress для оптимизации сайта
25.03.2026