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

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

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

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

  • Удаление записей, которым были присвоены эти таксономии, но сами категории и метки не удалились;
  • Импорт контента с ошибками или некорректным сопоставлением таксономий;
  • Эксперименты с организацией контента, когда создаются категории и метки, которые потом не используются;
  • Ошибки в плагинах, которые создают таксономии без привязки к записям.

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

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

В WordPress категории и метки хранятся в таблицах wp_terms (сам список), wp_term_taxonomy (тип таксономии и счетчик), и wp_term_relationships (связи с записями). Пустые категории и метки — это те, у которых счетчик count в wp_term_taxonomy равен нулю.

Вот SQL-запрос, который покажет пустые категории:

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

Аналогичный запрос для пустых тегов:

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

Эти запросы помогут вам оценить, сколько пустых таксономий у вас есть.

Удаление пустых категорий и меток через SQL

Чтобы полностью удалить пустые категории и метки из базы данных, нужно удалить записи из трех таблиц: wp_terms, wp_term_taxonomy и wp_term_relationships. Но так как пустые таксономии не связаны с записями, то в wp_term_relationships таких связей нет.

Для удаления пустых категорий:

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

Для удаления пустых тегов:

DELETE tt, t
FROM wp_term_taxonomy tt
JOIN wp_terms t ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;

Обратите внимание, что команда DELETE tt, t FROM ... работает в MySQL и удаляет записи из обеих таблиц одновременно. Перед выполнением таких операций обязательно сделайте резервную копию базы данных!

Автоматизация удаления пустых таксономий с помощью PHP-функций

Если вы хотите регулярно очищать базу от пустых категорий и меток, можно использовать код на PHP, который выполняет очистку через WP API. Вот пример функции для wpstart, которая удаляет пустые категории:

function wpstart_delete_empty_terms( $taxonomy = 'category' ) {
    $empty_terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => true, // Вернет только непустые термы
        'fields' => 'ids',
    ));

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

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

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

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

// Удаляем пустые метки
wpstart_delete_empty_terms('post_tag');

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

Плагины для очистки таксономий

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

  • Term Cleaner — плагин для удаления пустых терминов, удобный и простой;
  • Clearfy Pro — более мощный инструмент для оптимизации WordPress, включает функции очистки базы и таксономий;
  • WPRemark — плагин с функциями управления комментариями и чистки базы.

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

Важные рекомендации при удалении пустых категорий и меток

Перед тем как удалять таксономии, убедитесь, что они действительно не используются. Иногда счетчик count может быть некорректен из-за сбоев или ошибок плагинов. Для проверки можно использовать WP CLI команду:

wp term recount category
wp term recount post_tag

Эти команды пересчитают количество записей в каждой таксономии и обновят счетчики в базе.

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

Итоговые советы

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

Как сделать автоматический сбор и отправку логов в WordPress
11.02.2026
Как создать динамическую таблицу в WordPress с помощью шорткода
02.12.2025
Как изменить авторские права в WordPress без кода
22.01.2026
Как создать собственный шорткод в WordPress
05.11.2025
Автоматическое удаление неактивных пользователей WordPress
08.02.2026