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

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

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

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

Почему важно их удалять:

  • Оптимизация базы данных. Пустые таксономии могут создавать лишние записи в таблицах wp_terms, wp_term_taxonomy и wp_term_relationships.
  • Упрощение админки. Меньше лишних пунктов меню и настроек.
  • Повышение безопасности. Уменьшается вероятность уязвимостей, связанных с устаревшими расширениями.

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

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

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

Вот SQL-запрос, который покажет таксономии с количеством связанных терминов:

SELECT tt.taxonomy, COUNT(tr.object_id) AS object_count
FROM wp_term_taxonomy tt
LEFT JOIN wp_term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
GROUP BY tt.taxonomy
ORDER BY object_count ASC;

Результат покажет все таксономии и число элементов, к которым они применены. Таксономии с нулём в столбце object_count — кандидаты на удаление.

Пояснения к структуре таблиц

В WordPress таксономии и термины связаны через таблицы:

  • wp_terms — хранит термины (например, названия категорий или меток).
  • wp_term_taxonomy — связывает термин с таксономией (например, термин «Новости» с таксономией «category»).
  • wp_term_relationships — связывает объекты (посты, страницы) с терминами.

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

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

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

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

DELETE tt, t
FROM wp_term_taxonomy tt
JOIN wp_terms t ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'old_taxonomy';

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

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

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

Рассмотрим пример функции, которая находит все таксономии без связанных объектов и удаляет их. Такой код можно добавить в файл functions.php вашей темы или в отдельный плагин.

function wpkey_delete_unused_taxonomies() {
    $taxonomies = get_taxonomies(array(), 'objects');
    foreach ($taxonomies as $taxonomy) {
        // Пропускаем встроенные таксономии WordPress
        if (in_array($taxonomy->name, array('category', 'post_tag', 'nav_menu', 'link_category', 'post_format'))) {
            continue;
        }
        $terms = get_terms(array(
            'taxonomy' => $taxonomy->name,
            'hide_empty' => false,
        ));
        $is_unused = true;
        foreach ($terms as $term) {
            $count = $term->count;
            if ($count > 0) {
                $is_unused = false;
                break;
            }
        }
        if ($is_unused) {
            global $wpdb;
            $wpdb->query($wpdb->prepare(
                "DELETE tt, t FROM {$wpdb->term_taxonomy} tt JOIN {$wpdb->terms} t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s",
                $taxonomy->name
            ));
            echo 'Таксономия ' . esc_html($taxonomy->name) . ' удалена.<br>';
        }
    }
}

Запуск этой функции удалит все неиспользуемые пользовательские таксономии, сохраняя встроенные системные.

Важно

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

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

Если вы предпочитаете готовые решения, рекомендуем обратить внимание на плагин Clearfy Pro. Он предлагает удобный интерфейс для управления и отключения неиспользуемых таксономий и других элементов WordPress без необходимости писать код.

Преимущества Clearfy Pro:

  • Автоматический анализ и рекомендации по оптимизации.
  • Отключение лишних таксономий одним кликом.
  • Дополнительные инструменты для ускорения и безопасности сайта.

Использование Clearfy совместимо с большинством тем и плагинов и значительно упрощает техническое обслуживание сайта.

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

Удаление неиспользуемых таксономий — важный этап оптимизации WordPress-сайта. Важно:

  • Сделать резервную копию базы данных перед любыми изменениями.
  • Тщательно проверять, действительно ли таксономия не используется.
  • Использовать готовые инструменты, если не хотите работать с кодом.

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

Как автоматизировать удаление спама в комментариях WordPress
08.01.2026
Как создать автоматический бэкап WordPress без плагинов
28.12.2025
Как создать автоматическое обновление метаданных в WordPress
30.01.2026
Как избежать проблем с отзывами пользователей в WordPress
25.12.2025
Как удалить неиспользуемые таксономии в WordPress
25.02.2026

Ресурс в разработке, скоро здесь будет сайт по вордпресс