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

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

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

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

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

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

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

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

Для удаления пустых терминов мы можем использовать WP-функцию get_terms() с параметром hide_empty. Если указать hide_empty => true, мы получим только термины с записями, а если false — все термины, включая пустые. На основе этого можно определить пустые и удалить их.

Пример функции удаления пустых терминов

function wordpresses_delete_empty_terms($taxonomy = 'category') {
    // Получаем все термины таксономии
    $all_terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ));

    foreach ($all_terms as $term) {
        if ($term->count == 0) {
            wp_delete_term($term->term_id, $taxonomy);
        }
    }
}

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

// Для меток
// wordpresses_delete_empty_terms('post_tag');

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

Как вызвать функцию из админки

Для удобства можно добавить кнопку в админ-панели или создать WP-CLI команду. Пример добавления в админ-меню:

add_action('admin_menu', function() {
    add_submenu_page(
        'tools.php',
        'Удалить пустые термины',
        'Удалить пустые термины',
        'manage_options',
        'wordpresses-delete-empty-terms',
        'wordpresses_render_delete_terms_page'
    );
});

function wordpresses_render_delete_terms_page() {
    if (isset($_POST['delete_empty_terms'])) {
        wordpresses_delete_empty_terms('category'); // Можно расширить
        echo '<div class="notice notice-success is-dismissible">Пустые термины удалены.</div>';
    }
    echo '<form method="post"><input type="submit" name="delete_empty_terms" value="Удалить пустые категории" class="button button-primary"/></form>';
}

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

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

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

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

Для примера рассмотрим настройку и использование WP Sweep:

  1. Установите плагин WP Sweep или скачайте с официального репозитория.
  2. После активации перейдите в Инструменты > Sweep.
  3. Найдите раздел Taxonomies и нажмите кнопку "Sweep" рядом с пунктом "Empty Terms".
  4. Плагин удалит все пустые термины из всех таксономий.

Учтите, что работа с базой всегда требует резервного копирования перед удалением.

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

Профилактика — лучший способ. Вот несколько рекомендаций:

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

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

add_action('wordpresses_daily_empty_term_cleanup', 'wordpresses_delete_empty_terms');

if (! wp_next_scheduled('wordpresses_daily_empty_term_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wordpresses_daily_empty_term_cleanup');
}

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

Заключение по теме удаления пустых терминов

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

Если хотите расширить функционал, рекомендуем рассмотреть Clearfy Pro — плагин для оптимизации и очистки WordPress, в том числе работы с таксономиями.

WooCommerce: автоматическое изменение ставки налогов по регионам без плагинов
03.06.2026
Как отключить XML-RPC в WordPress без плагинов
10.05.2026
Как удалить неиспользуемые мета данные в WordPress для ускорения сайта
10.11.2025
Как удалить или изменить атрибуты img в WordPress без плагинов
20.02.2026
Как создать настройки плагинов в WordPress
14.11.2025