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

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

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

Пустые термины создают несколько проблем:

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

Поэтому регулярная чистка таксономий — это залог чистоты и оптимальной работы сайта.

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

Самый простой способ — зайти в раздел Записи > Рубрики или Записи > Метки (или аналогичные для кастомных таксономий). В колонке Записей указано, сколько постов связано с каждым термином. Пустые имеют значение 0.

Чтобы удалить такие термины, отметьте их чекбоксы и выберите действие «Удалить» в массовых действиях. Это удобно при небольшом количестве пустых терминов, но неудобно при большом объёме.

Автоматическое удаление пустых терминов таксономий с помощью кода

Для регулярной очистки лучше использовать PHP-код, который можно добавить в functions.php вашей темы или в кастомный плагин. Ниже пример функции, которая удаляет пустые термины для всех зарегистрированных таксономий.

function wpbe_delete_empty_terms() {
  // Получаем все таксономии, кроме системных
  $taxonomies = get_taxonomies(['public' => true], 'names');

  foreach ($taxonomies as $taxonomy) {
    // Получаем все термины в таксономии
    $terms = get_terms([
      'taxonomy' => $taxonomy,
      'hide_empty' => false,
    ]);

    if (is_wp_error($terms)) continue;

    foreach ($terms as $term) {
      // Проверяем, что термин пустой
      if ($term->count == 0) {
        wp_delete_term($term->term_id, $taxonomy);
      }
    }
  }
}

// Для примера запускаем при инициализации, можно настроить на cron
add_action('init', 'wpbe_delete_empty_terms');

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

Запуск очистки через WP-CLI

Если у вас есть доступ к консоли и установлен WP-CLI, можно написать кастомную команду для удаления пустых терминов. Это удобно для администраторов серверов.

wpbe_delete_empty_terms() {
  $taxonomies = get_taxonomies(['public' => true], 'names');
  foreach ($taxonomies as $taxonomy) {
    $terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
    foreach ($terms as $term) {
      if ($term->count == 0) {
        wp_delete_term($term->term_id, $taxonomy);
        WP_CLI::log("Deleted empty term {$term->name} from {$taxonomy}");
      }
    }
  }
}

if (defined('WP_CLI') && WP_CLI) {
  WP_CLI::add_command('wpbe-clean-empty-terms', 'wpbe_delete_empty_terms');
}

После добавления этой команды в файл плагина или темы достаточно выполнить wp wpbe-clean-empty-terms в терминале.

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

Если вы не хотите писать код, можно воспользоваться готовыми плагинами. Вот несколько популярных и надёжных решений:

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

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

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

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

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

Рекомендации по регулярному использованию очистки таксономий

Чтобы сайт работал быстро и без ошибок, советую:

  • Запускать очистку пустых терминов не реже одного раза в месяц.
  • Использовать WP-Cron для автоматизации задачи с кастомным PHP-скриптом.
  • Перед удалением делать резервные копии базы данных.
  • Следить, чтобы не удалять термины, которые могут использоваться в будущих публикациях.

Если у вас крупный сайт с сотнями тысяч терминов, лучше делать очистку поэтапно и тестировать на тестовом сервере.

Как использовать хуки для изменения функциональности WordPress без изменения кода темы
21.12.2025
Удаление проблемных постов в WordPress по заданным условиям
17.12.2025
Как использовать AJAX для динамической загрузки контента в WordPress
01.02.2026
Как автоматизировать удаление старого медиа в WordPress
14.04.2026
Как автоматизировать управление перенаправлениями в WordPress
11.02.2026