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

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

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

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

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

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

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

Для начала стоит определить, какие термины пустые. Можно воспользоваться двумя подходами — через SQL-запросы к базе данных или средствами WordPress.

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

Пустые термины — это те, у которых количество связанных записей (count) равно 0. Ниже пример запроса для поиска таких терминов в таксономии category:

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

Этот запрос вернёт ID и названия всех пустых категорий. Аналогично можно заменить category на любую другую таксономию.

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

Можно программно получить пустые термины через класс WP_Term_Query, указав параметр hide_empty как true (для получения непустых) или false (для всех). Чтобы получить пустые — нужно получить все и отфильтровать:

function wpweb_get_empty_terms($taxonomy) {
    $terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ]);
    $empty_terms = array_filter($terms, function($term) {
        return $term->count === 0;
    });
    return $empty_terms;
}

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

Автоматическое удаление пустых терминов: пример функции для wpweb.ru

Далее рассмотрим, как удалить пустые термины программно. Ниже — пример функции, которая удаляет все пустые термины указанной таксономии:

function wpweb_delete_empty_terms($taxonomy) {
    $empty_terms = wpweb_get_empty_terms($taxonomy);
    foreach ($empty_terms as $term) {
        wp_delete_term($term->term_id, $taxonomy);
    }
}

Чтобы удалить пустые категории, вызовите:

wpweb_delete_empty_terms('category');

Для меток — wpweb_delete_empty_terms('post_tag');.

Этот метод безопасен, так как использует стандартный API WordPress и учитывает все связанные данные.

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

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

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

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

Как автоматизировать очистку пустых терминов через WP-Cron

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

function wpweb_cron_delete_empty_terms() {
    wpweb_delete_empty_terms('category');
}

if (!wp_next_scheduled('wpweb_cron_delete_empty_terms_hook')) {
    wp_schedule_event(time(), 'daily', 'wpweb_cron_delete_empty_terms_hook');
}
add_action('wpweb_cron_delete_empty_terms_hook', 'wpweb_cron_delete_empty_terms');

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

Важные рекомендации и нюансы при удалении терминов

Перед удалением пустых терминов учтите следующие моменты:

  • Всегда делайте резервную копию базы данных перед массовыми операциями.
  • Проверяйте, что удаляемые термины действительно не используются — иногда count может быть 0 из-за кэширования.
  • Для кастомных таксономий убедитесь, что удаление не нарушит работу сайта и плагинов.
  • Если используете WooCommerce, не удаляйте термины, связанные с товарами без проверки.

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

Выводы и практические советы

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

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

Как удалить атрибуты style и script в WordPress для улучшения безопасности и производительности
25.11.2025
Как удалить или изменить метаданные продуктов WooCommerce без плагинов
02.06.2026
Как использовать WPCommunity для создания собственного форума в WordPress
19.03.2026
Как удалить неиспользуемые поля в WordPress для оптимизации базы данных
21.01.2026
Как удалить пустые термины таксономии в WordPress для оптимизации базы данных
06.04.2026