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

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

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

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

Если у вас много таких терминов, это может привести к:

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

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

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

Для автоматической очистки пустых терминов можно использовать WP-функции. Ниже приведён пример функции, которая перебирает термины заданной таксономии и удаляет те, у которых count равен 0.

function wpchecker_delete_empty_terms($taxonomy = 'category') {
    if (!taxonomy_exists($taxonomy)) {
        return;
    }

    $empty_terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => true,
        'fields' => 'ids',
    ));

    // Получаем все термины, включая пустые
    $all_terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
        'fields' => 'ids',
    ));

    // Определяем пустые термины
    $terms_to_delete = array_diff($all_terms, $empty_terms);

    foreach ($terms_to_delete as $term_id) {
        wp_delete_term($term_id, $taxonomy);
    }
}

// Пример вызова для категорий
wpchecker_delete_empty_terms('category');

Объяснение кода:

  • get_terms с hide_empty => true возвращает только термины с записями;
  • с hide_empty => false — все термины;
  • разница множеств — это пустые термины;
  • каждый пустой термин удаляется через wp_delete_term.

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

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

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

wpchecker_delete_empty_terms('product_cat');

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

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

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

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

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

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

Чтобы не запускать функцию вручную, её можно добавить в расписание WPCron:

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

add_action('wpchecker_cleanup_empty_terms_hook', function() {
    wpchecker_delete_empty_terms('category');
    wpchecker_delete_empty_terms('post_tag');
    // Добавьте другие таксономии по необходимости
});

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

Советы по безопасности и бэкапу

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

Для создания бэкапов можно использовать плагин WPBackup или любой другой надёжный инструмент бэкапа.

Заключение

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

Как использовать WPChecker для поиска и устранения проблем производительности WordPress
14.04.2026
Как вывести пользовательские данные из формы в WordPress с применением AJAX
31.12.2025
Как использовать meta запросы в WordPress для эффективного поиска и фильтрации
27.02.2026
Как использовать хуки и фильтры в WordPress для кастомизации сайта
02.11.2025
Как настроить автоматическое удаление старых черновиков в WordPress
02.03.2026