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

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

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

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

  • Чистота структуры сайта: Упрощается навигация и управление содержимым.
  • SEO оптимизация: Пустые категории создают «пустые» страницы, которые поисковики могут считать некачественным контентом.
  • Улучшение пользовательского опыта: Посетители не видят ненужные разделы и быстрее находят нужный контент.

Как найти пустые категории с помощью SQL-запроса и кода

Самый быстрый способ определить пустые категории — выполнить SQL-запрос по базе данных. Однако делать это напрямую не всегда удобно, поэтому можно использовать PHP-функцию.

SQL-запрос для поиска пустых категорий

SELECT t.term_id, t.name, tt.count
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;

Этот запрос возвращает все категории, у которых счетчик записей равен нулю. Обратите внимание, что префикс таблиц wp_ может отличаться.

PHP-код для получения списка пустых категорий

function wptemplates_get_empty_categories() {
    $args = [
        'taxonomy' => 'category',
        'hide_empty' => true // По умолчанию скрывает пустые, ставим false
    ];
    // Получаем все категории
    $all_categories = get_terms(array_merge($args, ['hide_empty' => false]));
    $empty_cats = [];
    foreach ($all_categories as $cat) {
        if ($cat->count === 0) {
            $empty_cats[] = $cat;
        }
    }
    return $empty_cats;
}

Теперь вызов функции wptemplates_get_empty_categories() вернет массив пустых категорий, с которыми можно работать дальше.

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

Чтобы удалить пустые категории, можно использовать стандартную функцию WordPress wp_delete_term(). Важно убедиться, что категория действительно пустая, чтобы не потерять данные.

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

function wptemplates_delete_empty_categories() {
    $empty_cats = wptemplates_get_empty_categories();
    foreach ($empty_cats as $cat) {
        wp_delete_term($cat->term_id, 'category');
    }
}

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

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

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

1. Term Management Tools

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

Скачать на официальном репозитории WordPress.

2. WP Bulk Delete

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

Дополнительно можно посмотреть описание и скачать на WPSHOP.

Практические рекомендации при работе с пустыми категориями

Перед удалением пустых категорий важно соблюдать несколько правил:

  • Резервное копирование: Создайте резервную копию базы данных, чтобы можно было откатить изменения.
  • Проверка связей: Убедитесь, что категории действительно пустые, а не отображают неверные счетчики.
  • Автоматизация с умом: Если используете автоматические скрипты или плагины, контролируйте процесс и не запускайте удаление без понимания последствий.

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

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

add_action('admin_menu', function() {
    add_submenu_page('tools.php', 'Удалить пустые категории', 'Удалить пустые категории', 'manage_categories', 'wptemplates-delete-empty-cats', 'wptemplates_admin_page');
});

function wptemplates_admin_page() {
    if (isset($_POST['wptemplates_delete_empty'])) {
        wptemplates_delete_empty_categories();
        echo '<div class="updated">Пустые категории удалены.</div>';
    }
    echo '<h1>Удаление пустых категорий</h1>';
    echo '<form method="post">';
    echo '<p><input type="submit" name="wptemplates_delete_empty" class="button button-primary" value="Удалить пустые категории" /></p>';
    echo '</form>';
}

Этот код добавляет новую страницу в меню «Инструменты», где можно одним кликом запустить удаление пустых категорий.

Заключение

Удаление пустых категорий — важная задача для поддержания чистоты и эффективности вашего сайта на WordPress. Используя приведенные методы, вы сможете быстро находить и удалять ненужные категории как вручную, так и программно. Если хочется удобства — подойдет плагин WP Bulk Delete с расширенными возможностями, который можно найти с WPSHOP. Применяйте эти техники, чтобы ваш сайт оставался аккуратным и эффективным.

Как создать отзывы с оценками в WordPress
20.02.2026
Как добавить поле в форму регистрации WordPress
10.11.2025
Создаем свой шаблон для WordPress с нуля
04.11.2025
Как создать адаптивные шаблоны WordPress с использованием атрибута srcset
30.03.2026
Как создать адаптивный шаблон WordPress без фреймворков
14.11.2025