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

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

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

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

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

Самый быстрый способ — выполнить SQL-запрос, который покажет термины без связанных записей. В таблице wp_term_taxonomy поле count хранит число записей, связанных с термином. Если count = 0, значит термин не используется.

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

SELECT t.term_id, t.name, tt.taxonomy FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.count = 0;

Этот запрос даст список терминов, которые не связаны ни с одной записью. Можно сузить поиск, например, только по категориям, заменив условие на tt.taxonomy = 'category'.

Удаление терминов с помощью SQL

Удалять термины напрямую через SQL нужно аккуратно, так как связаны они с несколькими таблицами. Чтобы удалить термин полностью, нужно очистить записи из таблиц wp_terms, wp_term_taxonomy и wp_term_relationships. Однако, если термин не используется, связей в wp_term_relationships нет.

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

DELETE t, tt FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'category' AND tt.count = 0;

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

Удаление неиспользуемых терминов программно с помощью WP-функций

Для более безопасного и гибкого подхода лучше использовать встроенные функции WordPress. Ниже пример функции wplancer_delete_unused_terms(), которая удаляет все неиспользуемые термины заданных таксономий.

function wplancer_delete_unused_terms(array $taxonomies = ['category', 'post_tag']) {
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms([
            'taxonomy' => $taxonomy,
            'hide_empty' => true,
        ]);

        // Получим все термины
        $all_terms = get_terms([
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
        ]);

        // Определим неиспользуемые термины
        $unused_terms = array_filter($all_terms, function($term) use ($terms) {
            return !in_array($term, $terms, false);
        });

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

Эта функция получает все термины таксономии, затем те, что используются, и удаляет оставшиеся, которые не связаны с записями. Можно вызвать ее из файла functions.php или создать плагин для периодической очистки.

Пояснения к функции

  • get_terms() с 'hide_empty' => true возвращает только используемые термины.
  • get_terms() с 'hide_empty' => false возвращает все термины.
  • Сравнивая два массива, мы находим те, у которых count = 0.
  • wp_delete_term() корректно удаляет термин и обновляет все связанные данные.

Плагины для управления терминами и оптимизации базы данных

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

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

Оба плагина помогают поддерживать базу данных в чистоте без ручного вмешательства.

Рекомендации по регулярной очистке и мониторингу

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

  • Регулярно проверять базу данных с помощью SQL-запросов или функций.
  • Настроить автоматические задачи (WP-Cron) для периодической очистки.
  • Использовать плагины оптимизации, которые включают функции очистки таксономий.
  • Делать резервные копии базы перед крупными изменениями.

Такой подход поможет избежать замедления сайта и ошибок, связанных с избыточными данными.

Заключение

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

Автоматическое удаление товара из корзины WooCommerce при установке количества в 0 через AJAX
25.05.2026
Как удалить и изменить атрибуты HTML в WooCommerce без плагинов
23.04.2026
Как создать автоматические отчёты в WordPress с помощью Expert Review
07.04.2026
Автоматическое удаление товаров с устаревшими атрибутами в WooCommerce
29.04.2026
Как изменить шаблон страницы товара в WooCommerce без поддержки темы
07.05.2026