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

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

Что такое пустые таксономии и термины в WordPress

В WordPress таксономии — это способ группировки записей, например, категории (category), метки (post_tag) и кастомные таксономии. Термины — конкретные элементы в таксономии, например категория «Новости» или метка «Обновления».

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

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

Удаление пустых терминов помогает:

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

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

Как найти пустые термины с помощью кода

Для начала нужно получить список терминов с нулевым количеством связанных записей. Используем функцию get_terms() с параметром 'hide_empty' => false и затем отфильтруем по count == 0.

function wpbox_get_empty_terms( $taxonomy = 'category' ) {
    $terms = get_terms( [
        'taxonomy'   => $taxonomy,
        'hide_empty' => false,
    ] );

    $empty_terms = [];
    if ( ! is_wp_error( $terms ) ) {
        foreach ( $terms as $term ) {
            if ( $term->count === 0 ) {
                $empty_terms[] = $term;
            }
        }
    }
    return $empty_terms;
}

Эта функция возвращает массив пустых терминов для указанной таксономии. Можно использовать ее для любой таксономии, заменив параметр $taxonomy.

Удаление пустых терминов программно

Чтобы удалить найденные пустые термины, можно использовать функцию wp_delete_term(). Ниже пример функции, которая удаляет все пустые термины в заданной таксономии.

function wpbox_delete_empty_terms( $taxonomy = 'category' ) {
    $empty_terms = wpbox_get_empty_terms( $taxonomy );
    foreach ( $empty_terms as $term ) {
        wp_delete_term( $term->term_id, $taxonomy );
    }
}

Пример вызова функции:

wpbox_delete_empty_terms( 'category' );
wpbox_delete_empty_terms( 'post_tag' );

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

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

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

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

При установке и использовании плагинов всегда делайте резервную копию сайта.

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

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

function wpbox_schedule_empty_term_cleanup() {
    if ( ! wp_next_scheduled( 'wpbox_cron_empty_term_cleanup' ) ) {
        wp_schedule_event( time(), 'daily', 'wpbox_cron_empty_term_cleanup' );
    }
}
add_action( 'wp', 'wpbox_schedule_empty_term_cleanup' );

add_action( 'wpbox_cron_empty_term_cleanup', function() {
    $taxonomies = get_taxonomies( [], 'names' );
    foreach ( $taxonomies as $taxonomy ) {
        wpbox_delete_empty_terms( $taxonomy );
    }
});

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

Особенности и предостережения

Перед удалением терминов важно понимать, что:

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

Заключение

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

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

Как создать свой виджет в WordPress: подробное руководство с примерами кода
14.01.2026
Запрет на вставку HTML и JavaScript в комментариях WordPress: практическое решение
20.02.2026
Создание уникальных типов записей в WordPress без плагинов
10.01.2026
Оптимизация базы данных WordPress: практические советы и примеры кода
09.11.2025
Как создать динамические карты сайта в WordPress с помощью плагинов и кода
14.03.2026