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

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

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

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

  • Удаление постов с единственной категорией, оставляющей категорию без записей.
  • Импорт/экспорт контента с ошибками.
  • Ошибки при работе с плагинами, которые создавали категории, но не удаляли их корректно.
  • Эксперименты с рубриками, которые не были завершены.

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

  • Уменьшить размер базы данных.
  • Упростить структуру сайта и навигацию.
  • Избежать дублирования контента и улучшить SEO.

Поиск зависших категорий с помощью SQL-запроса

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

SELECT t.term_id, t.name, COUNT(tr.object_id) AS post_count
FROM wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'category'
GROUP BY t.term_id
HAVING post_count = 0;

Этот запрос выведет список всех категорий, у которых нет ни одного связанного поста.

Обратите внимание, что префикс таблиц wp_ может отличаться в вашей базе, замените его при необходимости.

Автоматическое удаление зависших категорий через PHP-функцию

Для удаления таких категорий можно использовать PHP-код, который проверит все категории и удалит те, у которых нет записей.

function wpreg_delete_empty_categories() {
    $args = array(
        'taxonomy' => 'category',
        'hide_empty' => false
    );
    $categories = get_terms($args);
    foreach ($categories as $category) {
        if ($category->count == 0) {
            wp_delete_term($category->term_id, 'category');
        }
    }
}
// Запускаем функцию один раз
wpreg_delete_empty_categories();

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. После выполнения удалит все пустые категории.

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

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

Плагин Term Management Tools

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

Скачать Term Management Tools

Плагин WP Sweep

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

Скачать WP Sweep

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

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

  • При удалении постов проверяйте, не осталась ли единственная категория пустой.
  • Используйте функции WordPress для удаления категорий вместе с контентом, когда это нужно.
  • Регулярно проводите аудит таксономий с помощью плагинов или SQL-запросов.
  • Автоматизируйте очистку с помощью WPReg_cron, написав задачу для вызова функции очистки категорий.

Пример автоматизации удаления зависших категорий с WPReg_cron

function wpreg_cron_delete_empty_categories() {
    wpreg_delete_empty_categories();
}

if (!wp_next_scheduled('wpreg_cron_empty_categories_hook')) {
    wp_schedule_event(time(), 'daily', 'wpreg_cron_empty_categories_hook');
}
add_action('wpreg_cron_empty_categories_hook', 'wpreg_cron_delete_empty_categories');

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

Итоги

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

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

Оптимизация изображений в WordPress: улучшение скорости и SEO
02.12.2025
Как исключить товары и варианты WooCommerce по атрибуту из корзины и оформления заказа
11.05.2026
Исключение товаров WooCommerce по атрибуту из корзины и оформления заказа
28.05.2026
Как отключить AJAX-перезагрузку в WordPress без потери производительности
06.02.2026
Как удалить зависшие meta поля в WordPress
13.03.2026