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

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

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

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

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

Удаление таких категорий — важный этап чистки и оптимизации сайта. Сделать это вручную неудобно, особенно если категорий много. Автоматизация с помощью PHP — лучший путь.

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

Для начала нужно определить, какие категории пустые. Самый простой способ — получить все категории и проверить количество связанных с ними постов. В WordPress у объекта категории есть свойство count, которое показывает число записей в этой категории.

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

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

Эта функция вернет массив ID категорий без постов. Теперь можно перейти к удалению.

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

Для удаления категории в WordPress используется функция wp_delete_category(). Она удаляет категорию и корректно обрабатывает связи с постами (в нашем случае их нет, что упрощает задачу).

Создадим функцию, которая удалит все пустые категории на сайте:

function wp24_delete_empty_categories() {
    $empty_cats = wp24_get_empty_categories();
    if (empty($empty_cats)) {
        return 'Пустых категорий не найдено.';
    }
    foreach ($empty_cats as $cat_id) {
        wp_delete_category($cat_id);
    }
    return 'Удалено '.count($empty_cats).' пустых категорий.';
}

Эту функцию удобно запускать вручную через админку или интегрировать в задачи cron для регулярного обслуживания.

Пример запуска через WP-CLI

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

wp eval 'echo wp24_delete_empty_categories();'

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

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

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

function wp24_add_empty_cat_page() {
    add_submenu_page(
        'tools.php',
        'Удаление пустых категорий',
        'Удаление пустых категорий',
        'manage_options',
        'wp24-empty-categories',
        'wp24_empty_cat_page_callback'
    );
}
add_action('admin_menu', 'wp24_add_empty_cat_page');

function wp24_empty_cat_page_callback() {
    if (isset($_POST['wp24_delete_empty_cats_nonce']) && wp_verify_nonce($_POST['wp24_delete_empty_cats_nonce'], 'wp24_delete_empty_cats')) {
        $result = wp24_delete_empty_categories();
        echo '<div class="updated notice"><p>'.esc_html($result).'</p></div>';
    }
    echo '<div class="wrap"><h1>Удаление пустых категорий</h1>';
    echo '<form method="post">';
    wp_nonce_field('wp24_delete_empty_cats', 'wp24_delete_empty_cats_nonce');
    echo '<p><input type="submit" class="button button-primary" value="Удалить пустые категории" /></p>';
    echo '</form></div>';
}

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

Советы по безопасности и бэкапу перед удалением

Перед автоматическим удалением категорий важно:

  • Сделать резервную копию базы данных, чтобы можно было восстановить данные в случае ошибки;
  • Проверять права пользователя, чтобы только администраторы могли запускать удаление;
  • Использовать nonce для защиты форм от CSRF-атак, как показано в примере выше;
  • Тестировать функции на тестовом сайте, прежде чем применять на рабочем.

Альтернативы: плагины для очистки категорий

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

  • Clearfy Pro — многофункциональный плагин для оптимизации и очистки сайта, в том числе удаления пустых категорий;
  • Плагины по очистке таксономий, которые позволяют управлять категориями и тегами через интерфейс.

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

Итог

Удаление пустых категорий в WordPress — простая, но важная задача для поддержания порядка и оптимизации сайта. С помощью PHP кода можно автоматизировать этот процесс, сделать его удобным и безопасным. Используйте приведенные примеры и рекомендации, чтобы легко справиться с этой задачей на вашем сайте.

Как отладить и решить проблемы с переадресацией в WordPress
06.11.2025
Использование WooCommerce order meta для кастомизированных отчетов
21.05.2026
Удаление неиспользуемых таблиц в базе данных WordPress: практическое руководство
28.11.2025
Как использовать хук woocommerce_checkout_update_order_review в WooCommerce
21.05.2026
Как удалить записи из категории WordPress без удаления самих записей
27.12.2025