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

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

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

Таксономии — это способ группировки записей, страниц и кастомных типов записей. Стандартные таксономии — категории (category) и метки (post_tag), а также пользовательские, создаваемые разработчиками тем и плагинов. Если таксономия не используется, она занимает место в базе данных, замедляет запросы и усложняет администрирование.

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

  • Оптимизировать базу данных, уменьшив её размер.
  • Ускорить загрузку страниц за счёт уменьшения количества запросов.
  • Упростить интерфейс админ-панели, убрав лишние пункты меню.
  • Снизить риск конфликтов с другими плагинами и темами.

Как определить, какие таксономии не используются

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

1. Просмотр зарегистрированных таксономий

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

function wplite_list_taxonomies() {
    $taxonomies = get_taxonomies([], 'objects');
    echo '<pre>';
    foreach ($taxonomies as $taxonomy) {
        echo 'Таксономия: ' . $taxonomy->name . ' - ' . $taxonomy->label . "\n";
    }
    echo '</pre>';
}
add_action('admin_notices', 'wplite_list_taxonomies');

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

2. Проверка количества записей в таксономии

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

function wplite_taxonomy_counts() {
    $taxonomies = get_taxonomies([], 'names');
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
        $count = 0;
        foreach ($terms as $term) {
            $count += $term->count;
        }
        echo 'Таксономия ' . $taxonomy . ' содержит ' . $count . ' записей.<br>';
    }
}
add_action('admin_notices', 'wplite_taxonomy_counts');

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

Удаление таксономий: что важно знать

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

  • Отменить регистрацию таксономии в коде (удалить или закомментировать соответствующий register_taxonomy).
  • Удалить термины и связи в базе данных, так как они не удаляются автоматически.

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

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

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

function wplite_delete_taxonomy_terms($taxonomy) {
    if (!taxonomy_exists($taxonomy)) {
        return 'Таксономия не найдена';
    }

    $terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ]);

    foreach ($terms as $term) {
        wp_delete_term($term->term_id, $taxonomy);
    }

    global $wpdb;
    // Удаляем связи с записями в таблице term_relationships
    $term_taxonomy_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
        $taxonomy
    ));

    if (!empty($term_taxonomy_ids)) {
        foreach ($term_taxonomy_ids as $tt_id) {
            $wpdb->delete($wpdb->term_relationships, ['term_taxonomy_id' => $tt_id]);
        }
        $wpdb->delete($wpdb->term_taxonomy, ['taxonomy' => $taxonomy]);
    }

    return 'Таксономия ' . $taxonomy . ' успешно очищена';
}

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

add_action('admin_init', function() {
    echo wplite_delete_taxonomy_terms('old_taxonomy');
});

После очистки удалите регистрацию таксономии из кода.

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

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

  • Remove Taxonomy — простой плагин для удаления пользовательских таксономий.
  • Clearfy Pro — комплексный инструмент оптимизации, который включает функционал для отключения и скрытия неиспользуемых таксономий и других элементов.

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

Советы по безопасности и резервному копированию

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

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

Выводы и рекомендации

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

Используйте Clearfy Pro для комплексной оптимизации и упрощения управления неиспользуемыми элементами WordPress. Не забывайте делать резервные копии перед изменениями.

Как автоматизировать удаление неактивных пользователей в WordPress
28.04.2026
Как отключить WooCommerce Cart Fragments для ускорения сайта
06.05.2026
Как использовать хук WooCommerce 'order status changed' для кастомной логики
20.05.2026
Как удалить или изменить атрибуты продуктов WooCommerce через код
25.04.2026
Как использовать AJAX в WordPress для динамического обновления контента
10.12.2025