Как удалить пустые категории в WordPress без ошибок

Пустые категории в WordPress — это таксономии, которые не содержат ни одного опубликованного поста. Они могут возникать после удаления или перемещения записей и со временем засоряют административную панель, а также могут негативно влиять на SEO вашего сайта. В этой статье разберём, как безопасно и эффективно удалить пустые категории, используя как готовые плагины, так и собственные решения на PHP.

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

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

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

  • Чистить базу данных от ненужных элементов.
  • Повысить удобство управления таксономиями.
  • Улучшить SEO за счёт устранения пустых страниц архивов.

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

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

Плагин Term Management Tools

Один из самых популярных инструментов для управления таксономиями — Term Management Tools. Он позволяет массово удалять, объединять и менять категории.

Для удаления пустых категорий выполните следующие шаги:

  1. Установите и активируйте плагин через wp-admin.
  2. Перейдите в раздел «Рубрики» (Категории) в админке.
  3. Включите фильтр по количеству записей, чтобы отфильтровать категории с нулём записей.
  4. Отметьте нужные категории и выберите действие «Удалить».

Плагин безопасно удалит выбранные категории, не повредив записи, так как категории пусты.

Плагин Clearfy Pro (ссылка с UTM)

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

Удаление пустых категорий с помощью PHP-кода

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

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wplistru_delete_empty_categories() {
    $empty_categories = get_terms(
        array(
            'taxonomy' => 'category',
            'hide_empty' => true,
            'fields' => 'ids'
        )
    );

    $all_categories = get_terms(
        array(
            'taxonomy' => 'category',
            'hide_empty' => false,
            'fields' => 'ids'
        )
    );

    $empty_cats = array_diff($all_categories, $empty_categories);

    foreach ($empty_cats as $cat_id) {
        wp_delete_term($cat_id, 'category');
    }
}

// Запуск функции один раз
add_action('init', 'wplistru_delete_empty_categories');

Объяснение кода:

  • get_terms с hide_empty = true возвращает категории с записями.
  • get_terms с hide_empty = false возвращает все категории.
  • Разница между этими двумя массивами — пустые категории.
  • Функция wp_delete_term удаляет каждую пустую категорию.

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

Как обезопасить удаление и избежать ошибок

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

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

Рекомендуется тестировать скрипты на локальной копии сайта или в staging-среде.

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

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

Пример добавления задачи по расписанию:

function wplistru_schedule_empty_cat_cleanup() {
    if (!wp_next_scheduled('wplistru_cleanup_empty_categories_hook')) {
        wp_schedule_event(time(), 'daily', 'wplistru_cleanup_empty_categories_hook');
    }
}
add_action('wp', 'wplistru_schedule_empty_cat_cleanup');

add_action('wplistru_cleanup_empty_categories_hook', 'wplistru_delete_empty_categories');

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

Заключение

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

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

Как изменить slug постов в WordPress без потери SEO
19.03.2026
WooCommerce: как автоматически удалять заказы после отмены оплаты
17.05.2026
Оптимизация изображений в WordPress для ускорения сайта
16.12.2025
Как создать собственный шорткод в WordPress
18.11.2025
Как добавить дополнительные роли и права в WordPress с примерами
20.01.2026