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

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

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

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

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

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

Как найти пустые категории в WordPress программно

Для начала нужно понять, как программно определить, что категория пустая. В WordPress для категорий используется таксономия category. Каждая категория имеет свой ID и количество прикрепленных к ней записей.

Можно использовать функцию get_terms() с параметром 'hide_empty' => true, чтобы получить только непустые категории, либо 'hide_empty' => false, чтобы получить все и сравнить количество записей.

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

function wpmentor_get_empty_categories() {
    $empty_cats = get_terms(array(
        'taxonomy' => 'category',
        'hide_empty' => true, // true возвращает только непустые, нам нужно false
        'fields' => 'all'
    ));
    $empty_categories = array();
    foreach ($empty_cats as $cat) {
        if ($cat->count == 0) {
            $empty_categories[] = $cat;
        }
    }
    return $empty_categories;
}

Однако правильнее сразу вызвать с 'hide_empty' => false, чтобы получить все категории и проверить их счетчик count.

Исправленный код:

function wpmentor_get_empty_categories() {
    $all_cats = get_terms(array(
        'taxonomy' => 'category',
        'hide_empty' => false,
        'fields' => 'all'
    ));
    $empty_categories = array();
    foreach ($all_cats as $cat) {
        if ($cat->count == 0) {
            $empty_categories[] = $cat;
        }
    }
    return $empty_categories;
}

Как автоматически удалять пустые категории через WP-Cron

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

Ниже пример функции, которая удаляет все пустые категории, а также код для регистрации и запуска задачи по расписанию:

function wpmentor_delete_empty_categories() {
    $empty_categories = wpmentor_get_empty_categories();
    foreach ($empty_categories as $cat) {
        wp_delete_term($cat->term_id, 'category');
    }
}

// Регистрируем событие, если еще не зарегистрировано
if (!wp_next_scheduled('wpmentor_cron_delete_empty_categories')) {
    wp_schedule_event(time(), 'daily', 'wpmentor_cron_delete_empty_categories');
}

// Подписываем функцию на событие
add_action('wpmentor_cron_delete_empty_categories', 'wpmentor_delete_empty_categories');

Этот код настроит ежедневное удаление пустых категорий. Вы можете изменить частоту на 'hourly', 'twicedaily' или создать собственный интервал.

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

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

  • Clearfy Pro — плагин для оптимизации WordPress, который среди прочего позволяет удалять пустые категории и таксономии.
  • WPRemark — плагин для работы с отзывами, но в нем есть удобные инструменты для очистки таксономий и структур сайта.

Использование плагинов удобно, если вы не хотите заниматься кодом, но будьте внимательны с автоматическим удалением — всегда делайте резервные копии сайта.

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

Автоматическое удаление может иметь побочные эффекты, если в категории есть черновики или запланированные записи — они не учитываются в параметре count. Чтобы избежать потери данных, рекомендуется:

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

Для более точной проверки можно использовать WP_Query с параметром 'post_status' => 'any', чтобы найти все записи в категории:

function wpmentor_is_category_empty($cat_id) {
    $query = new WP_Query(array(
        'cat' => $cat_id,
        'post_status' => 'any',
        'posts_per_page' => 1
    ));
    return !$query->have_posts();
}

И тогда в функции удаления использовать именно эту проверку.

Выводы и рекомендации

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

Если вы хотите расширить функциональность, рекомендуем посмотреть плагины Clearfy Pro и WPRemark для комплексной оптимизации и управления категориями.

Автоматическое удаление неактивных пользователей в WordPress
24.02.2026
Авторизация через социальные сети в WordPress: настройка и примеры
15.04.2026
Как удалить версии записей в WordPress для оптимизации базы данных
18.11.2025
Как автоматизировать сбор и отправку отзывов в WordPress
08.03.2026
Как настроить автоматическое сохранение и восстановление контента в WordPress
04.12.2025