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

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

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

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

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

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

Плагин WPOptimize (https://wpshop.ru/plugins/wpoptimize/?utm_source=wpma.ru&utm_medium=article&utm_campaign=kak-avtomaticheski-udaljat-neispolzuemye-kategorii-v-wordpress)

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

Преимущество плагина — он комплексно работает с базой данных и поддерживает создание резервных копий перед удалением.

Плагин Term Management Tools

Term Management Tools расширяет возможности работы с таксономиями. С его помощью можно быстро найти и удалить пустые категории и метки. Плагин удобен для регулярной чистки.

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

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

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

    foreach ( $categories as $category ) {
        if ( 0 == $category->count && $category->term_id != get_option('default_category') ) {
            wp_delete_term( $category->term_id, 'category' );
        }
    }
}

// Запускаем удаление при активации темы или вручную
// add_action('after_switch_theme', 'wpma_remove_unused_categories');

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

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

Чтобы удалять пустые категории регулярно, можно добавить задание в WP-Cron:

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

add_action( 'wpma_cleanup_unused_categories', 'wpma_remove_unused_categories' );

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

Как избежать удаления нужных категорий

Иногда категории могут быть пустыми временно, например, если записи в них еще не опубликованы. Чтобы защитить важные категории, можно добавить их ID в исключения:

function wpma_remove_unused_categories_with_exceptions() {
    $exclude_ids = array(1, 5, 10); // ID категорий, которые не удалять
    $args = array(
        'taxonomy' => 'category',
        'hide_empty' => false,
    );
    $categories = get_terms( $args );

    foreach ( $categories as $category ) {
        if ( 0 == $category->count && ! in_array( $category->term_id, $exclude_ids ) ) {
            wp_delete_term( $category->term_id, 'category' );
        }
    }
}

Такой подход гарантирует сохранность важных категорий.

Практические советы и рекомендации

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

Заключение

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

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

Как создать защищённый формуляр обработки данных в WordPress
03.12.2025
Как создать динамические меню в WordPress с помощью кода
26.01.2026
Как автоматически удалить неиспользуемые шорткоды в WordPress
15.03.2026
Как добавить кастомные типы записей в WordPress без плагинов
16.12.2025
WooCommerce: как исправить ошибку дублирования SKU товаров
28.06.2026