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

В процессе работы с WordPress на сайте накапливаются термины таксономий (категории, метки и кастомные таксономии), которые больше не используются ни в одном из записей. Такие термины создают избыточные данные в базе и могут замедлять работу сайта, особенно при большом количестве. В этой статье рассмотрим, как найти и удалить неиспользуемые термины таксономий, используя как готовые плагины, так и собственный код.

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

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

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

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

Поиск неиспользуемых терминов таксономий с помощью SQL-запроса

Самый быстрый способ найти неиспользуемые термины — выполнить SQL-запрос к базе данных. В WordPress информация о терминах и их связях хранится в таблицах wp_terms, wp_term_taxonomy и wp_term_relationships.

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

SELECT t.term_id, t.name, tt.taxonomy
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE tr.object_id IS NULL
AND tt.count = 0
ORDER BY tt.taxonomy, t.name;

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

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

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

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

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

function wptavern_delete_unused_terms(array $taxonomies = []) {
    if (empty($taxonomies)) {
        $taxonomies = get_taxonomies([], 'names');
    }

    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms([
            'taxonomy' => $taxonomy,
            'hide_empty' => true,
            'fields' => 'ids',
        ]);

        $all_terms = get_terms([
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
            'fields' => 'ids',
        ]);

        $unused_terms = array_diff($all_terms, $terms);

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

// Пример вызова для категорий и меток
wptavern_delete_unused_terms(['category', 'post_tag']);

В этом коде мы получаем все термины таксономии, затем фильтруем по тем, у которых нет записей, и удаляем их функцией wp_delete_term(). Такой подход безопасен и использует встроенные функции WordPress.

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

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

  • Term Management Tools — расширяет возможности управления терминами, позволяет сливать и удалять неиспользуемые.
  • WP-Optimize — популярный плагин для оптимизации базы данных, в том числе удаляет неиспользуемые термины и метаданные.

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

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

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

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

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

Автоматизация очистки неиспользуемых терминов с WP-Cron

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

Добавьте в файл функций темы или плагина такой код:

add_action('wptavern_cron_delete_unused_terms', 'wptavern_delete_unused_terms');

if (!wp_next_scheduled('wptavern_cron_delete_unused_terms')) {
    wp_schedule_event(time(), 'weekly', 'wptavern_cron_delete_unused_terms');
}

Это создаст еженедельное событие, которое будет вызывать функцию очистки. Для корректной работы убедитесь, что используете функцию wptavern_delete_unused_terms() из предыдущего примера.

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

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

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

Для удобства можно интегрировать очистку в WP-Cron или использовать надежные плагины, например, Clearfy Pro, который содержит множество инструментов для оптимизации WordPress.

Как использовать хук WooCommerce 'woocommerce_product_query' для кастомизации списка товаров
04.06.2026
Как установить и настроить push-уведомления в WordPress
09.02.2026
Как добавить дополнительное логирование в WordPress для отладки
15.03.2026
Как использовать внутренний кеш в WordPress для ускорения загрузки страниц
09.01.2026
Как использовать хук WooCommerce 'woocommerce_order_status_changed' для дополнительных действий при смене статуса заказа
04.05.2026