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

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

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

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

Накопление таких терминов приводит к:

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

Поэтому удаление неиспользуемых терминов — важная часть оптимизации и поддержки WordPress-сайта.

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

Для начала нужно получить список терминов, которые не привязаны ни к одной записи. В таблице wp_term_taxonomy есть поле count, которое показывает, сколько записей связано с термином. Если это значение равно нулю, термин не используется.

Пример SQL-запроса для проверки таких терминов:

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;

Этот запрос вернёт список неиспользуемых терминов всех таксономий.

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

Удалять термины можно вручную через админку, но при большом количестве это неудобно. Лучше сделать скрипт, который автоматизирует процесс. Ниже пример функции wpweb_delete_unused_terms(), которую можно добавить в файл functions.php вашей темы или создать отдельный плагин.

function wpweb_delete_unused_terms() {
    global $wpdb;
    
    // Получаем все термины с count = 0
    $terms = $wpdb->get_results(
        "SELECT t.term_id, tt.taxonomy FROM {$wpdb->terms} t
        INNER JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id
        WHERE tt.count = 0"
    );

    if (!empty($terms)) {
        foreach ($terms as $term) {
            wp_delete_term($term->term_id, $term->taxonomy);
        }
        echo count($terms) . ' неиспользуемых терминов удалено.';
    } else {
        echo 'Неиспользуемых терминов не найдено.';
    }
}

Вызовите wpweb_delete_unused_terms(); один раз, например, через отдельный PHP-файл или админский хук, чтобы очистить базу.

Важные замечания по удалению через код

  • Перед удалением сделайте резервную копию базы данных, чтобы избежать потери данных.
  • Функция удаляет только термины с нулевым связующим count, не трогая активные категории.
  • Используйте функцию один раз и удаляйте её после, чтобы избежать случайного повторного запуска.

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

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

  • Term Management Tools — позволяет объединять, удалять и переименовывать термины, а также выявлять неиспользуемые.
  • WP Clean Up — комплексный плагин для оптимизации базы, включая удаление неиспользуемых терминов.
  • Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpweb.ru&utm_medium=article&utm_campaign=wpweb-kak-udalit-neispolzuemye-taxonomy-termy-v-wordpress) — мощный инструмент для оптимизации и очистки WordPress, включая работу с таксономиями.

Они позволяют безопасно провести очистку через интерфейс, что удобно для новичков.

Дополнительные советы по оптимизации таксономий в WordPress

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

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

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

function wpweb_delete_terms_on_post_delete($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 = $term->count;
            if ($count <= 1) { // Если термин связан только с этим постом
                wp_delete_term($term->term_id, $taxonomy);
            }
        }
    }
}
add_action('before_delete_post', 'wpweb_delete_terms_on_post_delete');

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

Как удалить или изменить метаданные продуктов WooCommerce без плагинов
21.05.2026
Как разрешить и запретить регистрацию пользователей в WordPress: практическое руководство
27.01.2026
Как удалить неиспользуемые поля в WordPress для оптимизации базы данных
21.01.2026
Как использовать AJAX для обновления контента в WordPress без перезагрузки страницы
29.03.2026
Как удалить редирект цикл в WordPress: пошаговое руководство
19.04.2026