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

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

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

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

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

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

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

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

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

Вот пример функции, которая выводит список таксономий и количество связанных с ними терминов:

function wpset_list_taxonomies_usage() {
    $taxonomies = get_taxonomies([], 'objects');
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms([
            'taxonomy' => $taxonomy->name,
            'hide_empty' => false,
        ]);
        $term_count = 0;
        foreach ($terms as $term) {
            $term_count += $term->count;
        }
        echo 'Таксономия: ' . esc_html($taxonomy->name) . ' — Используется в ' . intval($term_count) . ' записях.<br>';
    }
}

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

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

Удаление неиспользуемых таксономий из базы данных

WordPress хранит термины таксономий в нескольких таблицах: wp_terms, wp_term_taxonomy и wp_term_relationships. Если таксономия не используется, можно безопасно удалить все связанные с ней записи из таблицы wp_term_taxonomy, а также термины из wp_terms, если они не связаны с другими таксономиями.

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

function wpset_delete_taxonomy_data($taxonomy_name) {
    global $wpdb;

    // Получаем все term_taxonomy_ids для указанной таксономии
    $term_taxonomy_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
        $taxonomy_name
    ));

    if (empty($term_taxonomy_ids)) {
        echo 'Таксономия не найдена или уже пуста.';
        return;
    }

    // Удаляем связи term_relationships
    $ids_placeholder = implode(',', array_map('intval', $term_taxonomy_ids));
    $wpdb->query("DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ($ids_placeholder)");

    // Удаляем term_taxonomy
    $wpdb->query($wpdb->prepare(
        "DELETE FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
        $taxonomy_name
    ));

    // Опционально удаляем термины, которые больше нигде не используются
    $wpdb->query("DELETE t FROM {$wpdb->terms} AS t LEFT JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.term_id IS NULL");

    echo 'Данные таксономии "' . esc_html($taxonomy_name) . '" удалены.';
}

Вы можете вызвать эту функцию, передав имя таксономии, например:

wpset_delete_taxonomy_data('my_custom_taxonomy');

Это удалит все термины и связи для указанной таксономии.

Как зарегистрировать таксономии с возможностью их легкой очистки

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

function wpset_register_custom_taxonomy() {
    register_taxonomy('wpset_project_type', ['project'], [
        'label' => 'Типы проектов',
        'hierarchical' => true,
        'show_admin_column' => true,
    ]);
}
add_action('init', 'wpset_register_custom_taxonomy');

Так вы всегда сможете быстро найти свои таксономии по префиксу wpset_ и при необходимости удалить неиспользуемые.

Пример использования плагина Clearfy Pro для оптимизации таксономий

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

Рекомендации по безопасному удалению таксономий

Перед удалением таксономий всегда:

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

Это поможет избежать потери важных данных и сбоев в работе сайта.

Выводы и полезные советы

Удаление неиспользуемых таксономий вручную — это эффективный способ оптимизировать базу данных WordPress и улучшить производительность сайта. При этом важно тщательно анализировать данные, использовать правильные SQL-запросы и соблюдать меры предосторожности.

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

Реактивный фильтрованный вывод постов в WordPress с AJAX
20.03.2026
Как удалить ревизии записей в WordPress без плагинов
14.12.2025
Как создать уникальный вид записи в WordPress с помощью кода
30.01.2026
Автоматическое удаление неактуальных товаров в WooCommerce
21.04.2026
Как создать автоматические ответы на комментарии в WordPress
30.12.2025