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

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

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

Пустые категории:

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

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

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

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

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

Этот код возвращает массив объектов категорий, у которых нет записей.

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

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

function wpboot_delete_empty_categories() {
    $empty_cats = wpboot_get_empty_categories();
    foreach ($empty_cats as $cat) {
        $deleted = wp_delete_category($cat->term_id);
        if ($deleted) {
            error_log('Категория удалена: ' . $cat->name);
        } else {
            error_log('Не удалось удалить категорию: ' . $cat->name);
        }
    }
}

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

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

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

<?php
/**
 * Plugin Name: WPBoot Удаление пустых категорий
 * Description: Добавляет кнопку для удаления пустых категорий из админки.
 * Version: 1.0
 * Author: WPBoot
 */

add_action('admin_menu', 'wpboot_empty_cats_menu');

function wpboot_empty_cats_menu() {
    add_submenu_page(
        'edit.php',
        'Удалить пустые категории',
        'Удалить пустые категории',
        'manage_options',
        'wpboot-delete-empty-cats',
        'wpboot_empty_cats_page'
    );
}

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

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

function wpboot_delete_empty_categories() {
    $empty_cats = wpboot_get_empty_categories();
    foreach ($empty_cats as $cat) {
        wp_delete_category($cat->term_id);
    }
}

После активации этого плагина в меню «Записи» появится пункт «Удалить пустые категории», где вы сможете одним кликом очистить сайт от ненужных таксономий.

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

Если вам нужно регулярно чистить сайт, можно добавить автоматический запуск функции удаления через WP-Cron:

add_action('wpboot_delete_empty_categories_daily', 'wpboot_delete_empty_categories');

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

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

Советы по работе с категориями и таксономиями в WordPress

Удаление пустых категорий — часть общей работы по управлению таксономиями. Вот несколько рекомендаций:

  • Перед удалением категорий сделайте резервную копию базы данных.
  • Если у вас на сайте используются пользовательские таксономии, рассмотрите возможность расширения функций для работы с ними.
  • Следите за тем, чтобы важные категории не были случайно удалены.
  • Используйте плагины, например Clearfy Pro, которые помогают управлять таксономиями и оптимизируют структуру сайта. Подробнее на https://wpshop.ru/plugins/clearfy-pro/.

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

Как избежать конфликтов между плагинами в WordPress
22.01.2026
Как изменить вывод содержимого блока Gutenberg в WordPress через фильтры и хуки
28.02.2026
Как настроить безопасность WordPress с помощью плагинов
18.11.2025
Как изменить роль пользователя WordPress через код
12.12.2025
Автоматическое удаление старого контента в WordPress: пошаговое руководство
09.12.2025