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

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

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

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

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

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

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

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

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

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

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

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

wpcore_delete_empty_terms('category');
wpcore_delete_empty_terms('post_tag');

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

Автоматизация удаления через WP-Cron

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

Регистрация события WP-Cron

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

add_action('wpcore_delete_empty_terms_event', 'wpcore_cron_delete_empty_terms');

function wpcore_cron_delete_empty_terms() {
    // Удаляем пустые категории и метки ежедневно
    wpcore_delete_empty_terms('category');
    wpcore_delete_empty_terms('post_tag');
}

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

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

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

  • Clearfy — мощный инструмент для оптимизации WordPress, умеет чистить базу, в том числе и таксономии. Подробнее: Clearfy на WPSHOP.
  • WP-Optimize — популярный плагин для очистки и оптимизации базы данных, включая удаление неиспользуемых терминов.

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

Рекомендации и предосторожности

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

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

Для тестирования лучше запускать код на копии сайта или локальной среде.

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

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

function wpcore_delete_empty_terms_all_taxonomies() {
    $taxonomies = get_taxonomies(array('public' => true), 'names');

    foreach ($taxonomies as $taxonomy) {
        wpcore_delete_empty_terms($taxonomy);
    }
}

Этот вызов удобно запускать разово или в cron-задаче.

Заключение

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

WooCommerce: как автоматически удалять отменённые и завершённые заказы по дате без плагинов
09.05.2026
WooCommerce: как автоматически удалять неактивные вариации товаров без плагинов
04.06.2026
WooCommerce: автоматическое удаление неактивных вариаций товаров
31.05.2026
WooCommerce: как автоматически удалять отменённые заказы по дате
05.05.2026
WordPress: как правильно использовать мета-записи для улучшения производительности
06.03.2026