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

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

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

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

Если таксономия не используется, она:

  • Загромождает административную панель, создавая лишние элементы меню.
  • Увеличивает размер базы данных, замедляя запросы.
  • Может приводить к конфликтам или ошибкам при обновлениях и миграциях.

Поэтому регулярная чистка таксономий — важный этап поддержки сайта.

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

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

function wpset_list_taxonomies_usage() {
    $taxonomies = get_taxonomies([], 'objects');
    echo '<pre>';
    foreach ( $taxonomies as $taxonomy ) {
        $count = wp_count_terms( $taxonomy->name );
        echo $taxonomy->name . ' — ' . $count . " записей\n";
    }
    echo '</pre>';
}
add_action( 'admin_notices', 'wpset_list_taxonomies_usage' );

Этот код добавит в админке список таксономий с количеством элементов. Так вы сможете визуально определить таксономии с нулевой или минимальной активностью.

Удаление пользовательских таксономий из WordPress

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

Рассмотрим поэтапно, как удалить кастомную таксономию:

1. Отменяем регистрацию таксономии

В файлах темы или плагина найдите функцию register_taxonomy и закомментируйте или удалите её вызов. Например:

// unregister_taxonomy не существует, поэтому просто не регистрируем таксономию
// register_taxonomy( 'wpset_tax', 'post', [ ... ] );

После этого таксономия перестанет отображаться в интерфейсе.

2. Удаляем связи таксономии с записями

Чтобы очистить базу, удалите все связи терминов таксономии в таблице wp_term_relationships. Это можно сделать через SQL-запрос, либо программно.

Пример кода для удаления всех терминов таксономии wpset_tax:

function wpset_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 );
    }
}

// Вызов функции
wpset_delete_taxonomy_terms( 'wpset_tax' );

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

3. Опционально: удаляем записи с таксономией

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

function wpset_delete_posts_by_taxonomy( $taxonomy ) {
    $posts = get_posts([
        'tax_query' => [
            [
                'taxonomy' => $taxonomy,
                'field'    => 'term_id',
                'terms'    => get_terms( [ 'taxonomy' => $taxonomy, 'fields' => 'ids' ] ),
                'operator' => 'IN',
            ],
        ],
        'numberposts' => -1,
        'post_type' => 'any',
        'fields' => 'ids',
    ]);
    foreach ( $posts as $post_id ) {
        wp_delete_post( $post_id, true );
    }
}

// Вызов функции
wpset_delete_posts_by_taxonomy( 'wpset_tax' );

Будьте осторожны с этим шагом, чтобы случайно не удалить важный контент.

Удаление стандартных таксономий

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

Для этого можно использовать фильтр register_taxonomy_args и отменить регистрацию стандартной таксономии:

function wpset_unregister_default_taxonomy( $args, $taxonomy ) {
    if ( in_array( $taxonomy, ['category', 'post_tag'] ) ) {
        $args['public'] = false;
        $args['show_ui'] = false;
        $args['show_in_menu'] = false;
    }
    return $args;
}
add_filter( 'register_taxonomy_args', 'wpset_unregister_default_taxonomy', 10, 2 );

Это не удалит данные из базы, но скроет таксономию из интерфейса.

Оптимизация базы данных после удаления таксономий

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

  • Используйте в phpMyAdmin команду OPTIMIZE TABLE wp_terms, wp_term_taxonomy, wp_term_relationships;
  • Или воспользуйтесь плагином Clearfy Pro, который включает инструменты для оптимизации базы.

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

Пример использования на практике

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

  1. Временно отключаете регистрацию в коде.
  2. Запускаете функцию удаления терминов:
  3. wpset_delete_taxonomy_terms('wpset_genre');
  4. Проверяете, что связи удалены, и оптимизируете базу.
  5. Если нужно, удаляете записи, связанные с жанрами.

Это позволит очистить сайт и базу данных от устаревшей информации, сохранив при этом стабильность.

Заключение

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

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

Как удалить неиспользуемые attachment в WordPress: практическое руководство
28.02.2026
Использование хука woocommerce_order_status_changed для автоматизации в WooCommerce
17.04.2026
Как создать динамические блоки с помощью шорткодов в WordPress
27.12.2025
Как избежать конфликтов между плагинами в WordPress
19.11.2025
Автоматическое удаление нерабочих вариаций товаров в WooCommerce
24.04.2026