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

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

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

Пустые термины — это записи в базе данных, которым не назначены посты. Их наличие может привести к нескольким проблемам:

  • Загромождение интерфейса администратора, особенно если используется много категорий и меток.
  • Увеличение объёма запросов к базе данных при выборках таксономий.
  • Потенциальное снижение удобства SEO-оптимизации — пустые страницы таксономий могут индексироваться поисковыми системами.

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

Как найти пустые термины в стандартных таксономиях WordPress

Для начала разберёмся, как обнаружить пустые термины вручную и программно:

Использование встроенной админки

В разделе Записи - Рубрики или Записи - Метки в админке WordPress можно увидеть количество записей рядом с каждым термином. Если количество равно нулю, термин пустой. Однако, если терминов много, искать вручную неудобно.

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

Для программного поиска пустых терминов используйте функцию get_terms() с параметром 'hide_empty' => true для вывода только используемых терминов, или 'hide_empty' => false для всех. Чтобы получить пустые, можно сделать так:

$all_terms = get_terms([
    'taxonomy' => 'category',
    'hide_empty' => false
]);
$empty_terms = array_filter($all_terms, function($term) {
    return $term->count === 0;
});

В этом коде мы получаем все термины таксономии «category» и фильтруем те, у которых количество записей равно нулю.

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

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

function wp_pro_delete_empty_terms($taxonomy = 'category') {
    $terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => false
    ]);
    foreach ($terms as $term) {
        if ($term->count === 0) {
            wp_delete_term($term->term_id, $taxonomy);
        }
    }
}

// Вызов функции для категорий
wp_pro_delete_empty_terms('category');

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

Автоматизация удаления пустых терминов: cron-задачи и хуки

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

function wp_pro_schedule_empty_terms_cleanup() {
    if (!wp_next_scheduled('wp_pro_empty_terms_cleanup_hook')) {
        wp_schedule_event(time(), 'weekly', 'wp_pro_empty_terms_cleanup_hook');
    }
}
add_action('wp', 'wp_pro_schedule_empty_terms_cleanup');

add_action('wp_pro_empty_terms_cleanup_hook', function() {
    wp_pro_delete_empty_terms('category');
    wp_pro_delete_empty_terms('post_tag');
    // Добавьте свои кастомные таксономии здесь
});

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

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

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

  • Term Management Tools — расширяет возможности управления терминами, позволяет объединять и удалять термины, включая пустые.
  • WP Bulk Delete — мощный инструмент для массового удаления данных, включая пустые термины таксономий с гибкими фильтрами.

Для установки плагина перейдите в админку WordPress > Плагины > Добавить новый, введите название и установите. После активации настройте фильтры для удаления пустых терминов.

Особенности удаления пустых терминов в кастомных таксономиях

Если на вашем сайте используются кастомные таксономии, процедура удаления аналогична. Важно знать точное имя таксономии. Например, для таксономии product_category вызов будет:

wp_pro_delete_empty_terms('product_category');

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

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

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

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

Как настроить отложенный запуск задач в WordPress без использования WP-Cron
08.01.2026
WooCommerce: автоматическое изменение названия товара при изменении атрибутов
11.05.2026
Как избежать конфликтов между плагинами в WordPress: практические советы и решения
21.12.2025
Как удалить неиспользуемые виджеты в WordPress для оптимизации сайта
09.03.2026
Как отключить Gutenberg и вернуть классический редактор в WordPress
15.01.2026