Удаление неиспользуемых таксономий в WordPress: практическое руководство

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

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

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

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

  • Оптимизировать базу данных, убирая лишние записи;
  • Снизить нагрузку на админку, сделав интерфейс чище и удобнее;
  • Улучшить SEO, так как поисковые системы не будут индексировать пустые архивы;
  • Минимизировать возможные ошибки и конфликты с плагинами и темами.

Как найти неиспользуемые таксономии вручную

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

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

Если у вас есть доступ к командной строке и установлен WP CLI, можно выполнить команду для вывода всех терминов с количеством связанных постов:

wp term list <taxonomy> --fields=term_id,name,count --format=table

Замените <taxonomy> на нужную таксономию, например, category или post_tag. Терманы с count равным 0 — потенциально неиспользуемые.

SQL-запрос для поиска пустых терминов

Можно выполнить такой SQL-запрос в phpMyAdmin или через любой клиент базы данных:

SELECT t.term_id, t.name, tt.taxonomy, tr.object_id 
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.count = 0
AND tt.taxonomy NOT LIKE 'nav_menu'
GROUP BY t.term_id;

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

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

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

function wpabout_delete_unused_terms($taxonomy) {
    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => true,
        'fields' => 'ids',
    ));

    if (empty($terms)) {
        // Если нет используемых терминов, удалим все
        $all_terms = get_terms(array(
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
            'fields' => 'ids',
        ));

        foreach ($all_terms as $term_id) {
            wp_delete_term($term_id, $taxonomy);
        }

        return count($all_terms);
    }
    return 0;
}

// Пример вызова:
$deleted_count = wpabout_delete_unused_terms('category');
echo "Удалено терминов: $deleted_count";

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

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

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

  • Term Management Tools — позволяет массово удалять, объединять и редактировать термины.
  • Taxonomy Cleaner — специализированный плагин для удаления пустых терминов и очистки базы.
  • Clearfy Pro — комплексный инструмент для оптимизации WordPress, включает функции удаления неиспользуемых таксономий и оптимизации базы данных.

Например, в Clearfy Pro есть модуль для оптимизации таксономий, который позволяет безопасно очистить базу от «мусорных» терминов одним кликом.

Особенности и меры предосторожности при удалении таксономий

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

Также учитывайте:

  • Проверьте, не связаны ли термины с кастомными типами записей или плагинами, которые могут использовать таксономии;
  • Не удаляйте системные таксономии WordPress без крайней необходимости;
  • После удаления очистите кэш сайта и перегенерируйте постоянные ссылки (Permalinks) для корректного отображения;
  • Если используете REST API, проверьте, не используются ли удаляемые таксономии в запросах.

Автоматизация удаления неиспользуемых таксономий с WP-Cron

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

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

function wpabout_weekly_term_cleanup_callback() {
    $taxonomies = get_taxonomies(array(), 'names');
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms(array('taxonomy' => $taxonomy, 'hide_empty' => false));
        foreach ($terms as $term) {
            if ($term->count == 0) {
                wp_delete_term($term->term_id, $taxonomy);
            }
        }
    }
}
add_action('wpabout_weekly_term_cleanup', 'wpabout_weekly_term_cleanup_callback');

Этот код добавит еженедельное событие, которое перебирает все таксономии и удаляет пустые термины.

Итоги и рекомендации

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

WooCommerce: как автоматически изменять стоимость товара при изменении количества
26.05.2026
WooCommerce: как автоматически изменять стоимость товара при изменении атрибутов
14.06.2026
Как добавить автоматические метаданные для картинок в WordPress
31.03.2026
Как использовать WordPress Transients для кэширования данных и ускорения сайта
30.11.2025
Как удалить и решить проблему загрузки библиотек jQuery в WordPress
18.03.2026