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

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

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

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

  • Загромождают структуру таксономий и делают администрирование менее удобным.
  • Могут создавать «мёртвые» страницы, которые негативно сказываются на SEO.
  • Усложняют навигацию по сайту и могут сбивать с толку посетителей.

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

Как найти пустые категории в WordPress вручную

Для начала можно проверить категории через админ-панель WordPress. Перейдите в Записи > Рубрики. В списке категорий вы увидите столбец «Количество», который показывает количество записей в каждой категории. Все категории с нулём в этом столбце являются пустыми.

Но если категорий много, проверять вручную неудобно — лучше использовать автоматизацию.

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

Если у вас есть доступ к базе данных через phpMyAdmin или другой инструмент, можно удалить пустые категории напрямую SQL-запросом. В WordPress категории — это термины таксономии category, и количество записей учитывается в связях с таблицей wp_term_relationships.

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

DELETE t, tt FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id LEFT JOIN wp_term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id WHERE tt.taxonomy = 'category' GROUP BY t.term_id HAVING COUNT(tr.object_id) = 0;

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

Удаление пустых категорий с помощью PHP-кода в functions.php

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

Пример функции wplock_delete_empty_categories():

function wplock_delete_empty_categories() {
    $empty_categories = get_categories(array(
        'hide_empty' => true,
        'fields' => 'ids'
    ));

    $all_categories = get_categories(array(
        'hide_empty' => false,
        'fields' => 'ids'
    ));

    $to_delete = array_diff($all_categories, $empty_categories);

    foreach ($to_delete as $cat_id) {
        wp_delete_category($cat_id);
    }
}

Объяснение:

  • get_categories(['hide_empty' => true]) возвращает только категории с записями.
  • get_categories(['hide_empty' => false]) возвращает все категории.
  • Разница — это пустые категории, которые и удаляются функцией wp_delete_category().

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

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

Можно добавить кастомную страницу или кнопку в админ-панель для удобства:

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

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

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

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

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

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

Пример использования WP Bulk Delete:

  1. Установите и активируйте плагин.
  2. Перейдите в Bulk WP > Delete Terms.
  3. Выберите таксономию category.
  4. Активируйте опцию «Удалить пустые категории» и выполните удаление.

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

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

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

Автоматизация с помощью WP Cron позволит запускать очистку по расписанию:

if (!wp_next_scheduled('wplock_cron_delete_empty_categories')) {
    wp_schedule_event(time(), 'daily', 'wplock_cron_delete_empty_categories');
}

add_action('wplock_cron_delete_empty_categories', 'wplock_delete_empty_categories');

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

Заключение

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

Если вы хотите дополнительно оптимизировать WordPress, рекомендуем обратить внимание на плагин Clearfy Pro — он помогает улучшить производительность и безопасность сайта.

Как сделать двойную авторизацию в WordPress без плагинов
18.02.2026
Как удалить неиспользуемые таблицы базы данных WordPress: практическое руководство
27.03.2026
Как удалить пустые категории в WordPress
07.01.2026
Как избежать проблемы открытых директорий в WordPress: практические решения и примеры кода
14.01.2026
Как удалить или отключить плагин WordPress: практическое руководство
09.04.2026