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

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

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

Пустые категории и метки — это термины таксономий, которые не привязаны ни к одному посту. Они:

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

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

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

В WordPress по умолчанию не отображается сразу количество записей в категории или метке, но можно перейти в раздел Записи > Рубрики (для категорий) или Записи > Метки, где будет колонка «Кол-во», показывающая количество записей. Отфильтровать пустые напрямую нельзя, но можно отсортировать по количеству и вручную выделить пустые для удаления.

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

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

Для опытных пользователей и разработчиков удобнее сразу работать с базой данных. Вот пример SQL-запроса, который удалит все пустые категории (термины таксономии category), не привязанные к записям:

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

Для меток (taxonomy = 'post_tag') запрос аналогичный:

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

Важно: сделайте резервную копию базы данных перед выполнением запросов.

Этот метод быстро удалит пустые термины напрямую в базе, но требует доступа к phpMyAdmin или другому инструменту управления базой.

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

WP CLI — мощный инструмент для управления WordPress из командной строки. Чтобы удалить пустые категории, можно использовать скрипт на PHP или команду:

wp term list category --format=ids --field=count --orderby=count

Но удобнее написать скрипт на PHP, который проверит count и удалит пустые:

function wpexpert_delete_empty_terms($taxonomy) {
    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ));
    foreach ($terms as $term) {
        if ($term->count == 0) {
            wp_delete_term($term->term_id, $taxonomy);
        }
    }
}

wpexpert_delete_empty_terms('category');
wpexpert_delete_empty_terms('post_tag');
<

Скрипт можно сохранить в файл и запустить через WP CLI командой wp eval-file filename.php.

Автоматизация удаления пустых категорий и меток при помощи плагина Clearfy Pro

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

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

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

Чтобы минимизировать появление пустых терминов:

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

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

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

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

add_action('delete_post', 'wpexpert_cleanup_empty_terms_after_post_delete');
function wpexpert_cleanup_empty_terms_after_post_delete($post_id) {
    $taxonomies = array('category', 'post_tag');
    foreach ($taxonomies as $taxonomy) {
        $terms = wp_get_post_terms($post_id, $taxonomy);
        foreach ($terms as $term) {
            $term_data = get_term($term->term_id, $taxonomy);
            if ($term_data->count <= 1) { // 1, потому что пост еще не удален
                wp_delete_term($term->term_id, $taxonomy);
            }
        }
    }
}

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

Как избежать конфликтов между плагинами в WordPress: практические советы и примеры
22.01.2026
Как удалить зависшие опции в базе WordPress без плагинов
10.05.2026
WooCommerce: как устранить ошибку «Невозможно создать заказ» при оформлении
17.06.2026
WooCommerce: использование хука woocommerce_checkout_update_order_review для дополнительной валидации на этапе оформления
29.05.2026
Как использовать хуки для добавления функционала в WordPress
15.01.2026