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

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

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

Если категория не содержит записей, она не несет ценности для пользователей и SEO. Такие категории могут:

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

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

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

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

Чтобы получить список пустых категорий, можно использовать функцию get_categories() с параметром 'hide_empty' => false для получения всех категорий, а затем отфильтровать по count == 0.

function wpto_get_empty_categories() {
    $categories = get_categories(array(
        'hide_empty' => false
    ));
    $empty_cats = array();
    foreach ($categories as $cat) {
        if ($cat->count == 0) {
            $empty_cats[] = $cat;
        }
    }
    return $empty_cats;
}

Как удалить пустые категории с помощью PHP-кода

Для удаления категории в WordPress используется функция wp_delete_term(). Нужно передать ID категории и таксономию (в нашем случае category).

Ниже пример функции, которая удаляет все пустые категории автоматически:

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

Вы можете вызвать эту функцию вручную из темы (например, через functions.php) или создать WP-CLI команду для регулярного запуска.

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

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

Пример кода для добавления кнопки на страницу Категорий:

add_action('restrict_manage_posts', 'wpto_add_delete_empty_button');
function wpto_add_delete_empty_button() {
    if ('category' !== get_current_screen()->taxonomy) return;
    ?>
    <form method="post" style="display:inline; margin-left:10px;">
        <input type="hidden" name="wpto_delete_empty_categories" value="1">
        <input type="submit" class="button button-secondary" value="Удалить пустые категории">
    </form>
    <?php
}

add_action('admin_init', 'wpto_handle_delete_empty_categories');
function wpto_handle_delete_empty_categories() {
    if (!empty($_POST['wpto_delete_empty_categories']) && current_user_can('manage_categories')) {
        wpto_delete_empty_categories();
        wp_redirect(admin_url('edit-tags.php?taxonomy=category&deleted_empty=1'));
        exit;
    }
}

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

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

Если вы не хотите писать код, можно использовать плагины. Например, Remove Empty Categories позволяет быстро найти и удалить пустые категории.

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

Практические рекомендации и предосторожности

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

Учтите, что удаление категории не удаляет записи — они просто перестают быть связаны с этой категорией.

Можно расширить функционал, например, отправлять уведомления администратору или вести лог удалений.

Итог

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

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

Как создать собственный виджет в WordPress: пошаговое руководство
30.11.2025
Как создать автоматический импорт продуктов в WordPress с помощью REST API
29.03.2026
Как исправить ошибку WooCommerce «Невозможно создать заказ» при смене способа оплаты
08.05.2026
Как отключить Emoji в WordPress для ускорения сайта
18.05.2026
Использование хука woocommerce_order_status_changed для автоматизации процессов в WooCommerce
02.06.2026