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

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

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

Пустые термины таксономий — это записи в таблице wp_terms и связанные с ними в wp_term_taxonomy, у которых нет связанных записей в wp_term_relationships. Основные проблемы, которые они создают:

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

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

Как найти пустые термины таксономий через SQL-запрос

Для начала полезно понять, какие термины считать пустыми. В таблице wp_term_taxonomy поле count хранит количество записей, связанных с термином. Если count=0, термин пустой.

Для получения списка пустых терминов для определенной таксономии используйте SQL-запрос:

SELECT t.term_id, t.name FROM wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
WHERE tt.count = 0 AND tt.taxonomy = 'category';

Замените 'category' на нужную таксономию, например post_tag или кастомную таксономию.

Так вы получите список пустых терминов, которые можно удалить.

Удаление пустых терминов программно с помощью PHP-функции

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

Ниже пример функции wpacademy_delete_empty_terms, удаляющей пустые термины для заданной таксономии:

function wpacademy_delete_empty_terms($taxonomy = 'category') {
    $empty_terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => true,
        'fields' => 'ids'
    ]);

    // get_terms с hide_empty=true возвращает непустые термины, нужно наоборот
    $all_terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
        'fields' => 'ids'
    ]);

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

    if (empty($empty_terms)) {
        return 'Пустых терминов не найдено.';
    }

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

    return count($empty_terms) . ' пустых терминов удалено.';
}

Пример вызова функции:

echo wpacademy_delete_empty_terms('post_tag');

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

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

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

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

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

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

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

Пример добавления задачи в WP-Cron:

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

add_action('wpacademy_empty_terms_cleanup_hook', function() {
    wpacademy_delete_empty_terms('category');
    wpacademy_delete_empty_terms('post_tag');
});

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

Важные рекомендации при работе с терминами

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

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

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

Итоги

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

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

Как добавить уникальные метаданные для страниц в WordPress без плагинов
21.02.2026
Как автоматизировать удаление спама в WordPress
31.12.2025
Как отключить кэш в WordPress для разработчиков
27.03.2026
Как настроить автоматическое удаление старого медиафайла в WordPress
23.01.2026
Как решить проблему: не работает форма обратной связи в WordPress
07.12.2025