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

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

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

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

Причины удалить пустые термины:

  • Улучшение производительности запросов к базе данных, особенно при большом количестве терминов.
  • Избежание дублирования и путаницы в админке и на фронтенде.
  • Улучшение SEO: поисковые системы не индексируют пустые страницы архивов таксономий, что снижает качество сайта.

Удаление вручную неудобно, если терминов много. Поэтому рассмотрим автоматизированные методы.

Как найти пустые термины с помощью WP_Query и get_terms

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

function wpqa_get_empty_terms($taxonomy = 'category') {
    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ));

    $empty_terms = array();
    foreach ($terms as $term) {
        if (0 === intval($term->count)) {
            $empty_terms[] = $term;
        }
    }

    return $empty_terms;
}

Данная функция возвращает массив пустых терминов по указанной таксономии.

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

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

function wpqa_delete_empty_terms($taxonomy = 'category') {
    $empty_terms = wpqa_get_empty_terms($taxonomy);
    $deleted = 0;
    foreach ($empty_terms as $term) {
        $result = wp_delete_term($term->term_id, $taxonomy);
        if (!is_wp_error($result) && $result) {
            $deleted++;
        }
    }
    return $deleted;
}

Применение:

// Удаляем пустые категории
$deleted_count = wpqa_delete_empty_terms('category');
echo 'Удалено пустых категорий: ' . $deleted_count;

С помощью этой функции можно удалять пустые метки (tag) и свои пользовательские таксономии, просто изменив параметр $taxonomy.

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

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

Удаление при сохранении записи

Добавьте следующий код в файл functions.php вашей темы или в свой плагин:

add_action('save_post', 'wpqa_delete_empty_terms_on_save', 20, 1);
function wpqa_delete_empty_terms_on_save($post_id) {
    // Проверяем тип записи, если нужно
    if (get_post_type($post_id) !== 'post') {
        return;
    }

    // Удаляем пустые категории и метки
    wpqa_delete_empty_terms('category');
    wpqa_delete_empty_terms('post_tag');
}

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

Удаление по расписанию (WP-Cron)

Можно настроить ежедневную задачу по очистке пустых терминов:

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

add_action('wpqa_daily_delete_empty_terms', 'wpqa_delete_empty_terms_cron');

function wpqa_delete_empty_terms_cron() {
    wpqa_delete_empty_terms('category');
    wpqa_delete_empty_terms('post_tag');
}

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

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

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

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

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

Рекомендации по безопасности и бэкапу

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

Для создания резервной копии можно использовать плагин Backup Master или аналогичные решения.

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

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

Применяйте описанные методы, и ваш сайт будет работать быстрее и стабильнее.

WooCommerce: автоматическое изменение стоимости товара в зависимости от роли пользователя
08.06.2026
Как настроить адаптивную загрузку изображений в WordPress с помощью Clearfy Pro
04.01.2026
WooCommerce: как изменить стоимость товара по дисконным кодам
16.06.2026
WooCommerce: как изменить стоимость товара в зависимости от количества в корзине
16.06.2026
Как удалить все заказы WooCommerce одним кодом
19.05.2026