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

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

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

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

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

  • Оптимизировать базу данных и ускорить запросы;
  • Облегчить администрирование таксономий;
  • Повысить качество SEO за счёт более релевантных меток и категорий.

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

Неиспользуемый термин — это термин, у которого count в таблице wp_term_taxonomy равен 0, то есть он не связан ни с одним объектом (записью, страницей и т.д.). Можно найти такие термины с помощью SQL-запроса:

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

Этот запрос вернёт список всех терминов с нулевым счётом использования. Можно выполнить его через phpMyAdmin или любой другой инструмент управления базой данных.

Поиск неиспользуемых терминов через PHP-код

Для автоматизации задачи можно использовать WP-функции:

function wpbloger_get_unused_terms( $taxonomy = 'category' ) {
    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ));
    $unused = array();
    foreach ( $terms as $term ) {
        if ( $term->count === 0 ) {
            $unused[] = $term;
        }
    }
    return $unused;
}

Данная функция возвращает массив терминов выбранной таксономии, у которых нет связанных записей.

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

После того как мы получили список неиспользуемых терминов, их можно удалить с помощью функции wp_delete_term(). Ниже пример кода, который удаляет все неиспользуемые термины в указанной таксономии:

function wpbloger_delete_unused_terms( $taxonomy = 'category' ) {
    $unused_terms = wpbloger_get_unused_terms( $taxonomy );
    foreach ( $unused_terms as $term ) {
        wp_delete_term( $term->term_id, $taxonomy );
    }
}

// Использование:
wpbloger_delete_unused_terms( 'post_tag' ); // удалит неиспользуемые метки
wpbloger_delete_unused_terms( 'category' ); // удалит неиспользуемые категории

Рекомендуется запускать такой код один раз, например, через плагин Code Snippets или в functions.php дочерней темы, а после выполнения удалять, чтобы не было случайного удаления терминов.

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

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

  • Term Management Tools — позволяет сливать и удалять термины таксономий, в том числе неиспользуемые.
  • WP Sweep — оптимизирует базу данных, удаляет ревизии, спам, а также неиспользуемые термины.
  • Clearfy Pro (от WPSHOP) — набор инструментов для оптимизации сайта, включает удаление мусора в базе данных, в том числе неиспользуемых терминов.

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

Пример использования Clearfy Pro

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

Как избежать появления неиспользуемых терминов в будущем

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

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

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

Пример кода для автоматического удаления термина при удалении последнего связанного поста (wpbloger)

function wpbloger_delete_term_if_unused( $post_id ) {
    $taxonomies = get_object_taxonomies( get_post_type( $post_id ) );
    foreach ( $taxonomies as $taxonomy ) {
        $terms = wp_get_post_terms( $post_id, $taxonomy );
        foreach ( $terms as $term ) {
            $count = intval( $term->count );
            if ( $count <= 1 ) { // текущий пост последний с этим термином
                wp_delete_term( $term->term_id, $taxonomy );
            }
        }
    }
}
add_action( 'before_delete_post', 'wpbloger_delete_term_if_unused' );

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

Добавление поля телефона с подтверждением в форму регистрации WordPress
12.02.2026
Как создать автоматическое удаление старого контента в WordPress
23.12.2025
Как автоматически удалять неиспользуемые медиа файлы в WordPress
04.03.2026
Кастомизация пунктов меню в админке WordPress: настройка и примеры кода
30.12.2025
Автоматическое обновление WordPress, плагинов и тем без сбоев
18.03.2026