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

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

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

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

Это приводит к следующим проблемам:

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

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

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

Термин считается пустым, если у него count = 0 — то есть он не связан ни с одной записью. Это можно проверить с помощью SQL-запроса напрямую в базе данных или через PHP-функции.

Пример SQL-запроса для получения пустых терминов из категории (taxonomy = 'category'):

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

Этот запрос покажет список категорий без записей. Аналогично можно проверить и другие таксономии.

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

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

Рекомендуемые плагины:

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

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

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

Ниже приведён пример функции, которая удаляет пустые термины из переданных таксономий. Функция делает запрос всех терминов с count = 0 и удаляет их через wp_delete_term().

function wpcheckerDeleteEmptyTerms($taxonomies = array('category', 'post_tag')) {
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms(array(
            'taxonomy' => $taxonomy,
            'hide_empty' => true
        ));
        if (is_wp_error($terms)) {
            continue;
        }
        $all_terms = get_terms(array(
            'taxonomy' => $taxonomy,
            'hide_empty' => false
        ));
        foreach ($all_terms as $term) {
            if ($term->count === 0) {
                wp_delete_term($term->term_id, $taxonomy);
            }
        }
    }
}

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

Пример запуска функции через WP-CLI

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

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wpchecker delete-empty-terms', function() {
        wpcheckerDeleteEmptyTerms();
        WP_CLI::success('Пустые термины удалены.');
    });
}

Команду wp checker delete-empty-terms можно запускать из терминала для обслуживания сайта.

Оптимизация и рекомендации

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

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

Для автоматизации можно использовать планировщик задач (WP Cron), вызывающий функцию очистки, например, раз в неделю.

Пример автоматического запуска очистки по расписанию

function wpcheckerScheduleEmptyTermCleanup() {
    if (!wp_next_scheduled('wpchecker_empty_term_cleanup')) {
        wp_schedule_event(time(), 'weekly', 'wpchecker_empty_term_cleanup');
    }
}
add_action('wp', 'wpcheckerScheduleEmptyTermCleanup');

add_action('wpchecker_empty_term_cleanup', function() {
    wpcheckerDeleteEmptyTerms();
});

Заключение

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

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

Как удалить неиспользуемые метаданные в WordPress для ускорения сайта
28.11.2025
Как удалить и заблокировать жёсткие и soft спам комментарии в WordPress
13.02.2026
WooCommerce: решение проблемы с незапуском хука woocommerce_order_status_changed
14.05.2026
WooCommerce: как использовать метод prepare_items для кастомизации списка заказов в админке
15.06.2026
WooCommerce: автоматическое изменение статуса заказа при оплате через кастомный шлюз
25.05.2026