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

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

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

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

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

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

Для начала рассмотрим, как определить пустые термины без использования кода. В админке WordPress перейдите в раздел «Записи» → «Рубрики» или «Метки». Там вы увидите список терминов с колонкой «Записей» — если у термина значение 0, значит он пустой.

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

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

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

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

function wponline_delete_empty_terms($taxonomy = 'category') {
    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => true,
        'fields' => 'ids'
    ));

    $all_terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
        'fields' => 'ids'
    ));

    $empty_terms = array_diff($all_terms, $terms);

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

Объяснение:

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

Пример запуска функции для нескольких таксономий

add_action('init', 'wponline_delete_empty_terms_all');
function wponline_delete_empty_terms_all() {
    $taxonomies = array('category', 'post_tag', 'product_cat'); // добавьте свои таксономии
    foreach ($taxonomies as $taxonomy) {
        wponline_delete_empty_terms($taxonomy);
    }
}

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он удалит пустые термины при каждом вызове init. Для экономии ресурсов можно запускать его вручную или по расписанию.

Автоматизация удаления пустых терминов с помощью WP-Cron

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

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

add_action('wponline_cron_delete_empty_terms', 'wponline_delete_empty_terms_all');

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

Если хотите изменить период, используйте фильтр cron_schedules для добавления новых интервалов.

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

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

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

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

Рекомендации по безопасности и тестированию

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

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

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

Заключение

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

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

Как создать автоматический сбор отзывов в WordPress
24.01.2026
Как удалить старые вариации товаров в WooCommerce с помощью кода
05.05.2026
Автоматическое удаление старых записей в WordPress по дате публикации
03.02.2026
Как использовать REST API в WordPress для создания уникальных функций
16.11.2025
Как настроить автоматическое удаление неиспользуемых вариаций товаров в WooCommerce
27.04.2026