Как удалить категории без записей в WordPress автоматически

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

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

Категории без постов создают пустые архивы, по которым поисковые системы могут снизить рейтинг сайта из-за недостатка уникального контента. Кроме того, пустые категории ухудшают пользовательский опыт, так как приводят к страницам с сообщением «Записей не найдено».

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

Как найти категории без записей в WordPress

В WordPress все категории хранятся как термины таксономии category. Каждая категория содержит поле count, которое показывает количество записей, прикрепленных к ней.

Для поиска пустых категорий можно использовать WP_Query или функции терминологии WordPress. Вот пример простого способа получить список таких категорий через PHP:

function wpbit_get_empty_categories() {
    $args = [
        'taxonomy' => 'category',
        'hide_empty' => true,
    ];
    $categories = get_categories($args);
    $empty_categories = [];
    $all_categories = get_categories(['taxonomy' => 'category', 'hide_empty' => false]);

    foreach ($all_categories as $cat) {
        if ($cat->count == 0) {
            $empty_categories[] = $cat;
        }
    }
    return $empty_categories;
}

Этот код получает все категории и фильтрует те, у которых count равен 0.

Автоматическое удаление категорий без записей — пример кода

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

function wpbit_delete_empty_categories() {
    $empty_categories = wpbit_get_empty_categories();
    foreach ($empty_categories as $cat) {
        wp_delete_term($cat->term_id, 'category');
    }
}

// Запускаем удаление категорий
wpbit_delete_empty_categories();

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

Автоматизация удаления через WP-Cron

Чтобы запускать удаление пустых категорий по расписанию, добавим задачу в WP-Cron:

// Регистрируем событие при активации темы или плагина
if (!wp_next_scheduled('wpbit_cron_delete_empty_categories')) {
    wp_schedule_event(time(), 'daily', 'wpbit_cron_delete_empty_categories');
}

// Хук для удаления категорий
add_action('wpbit_cron_delete_empty_categories', 'wpbit_delete_empty_categories');

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

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

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

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

Для интеграции с WPShop можно рекомендовать Clearfy Pro, который помогает оптимизировать сайт, включая очистку таксономий и удаление пустых категорий.

Советы и предостережения при удалении категорий

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

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

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

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

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

function wpbit_list_categories() {
    $cats = get_categories(['taxonomy' => 'category', 'hide_empty' => false]);
    echo '<ul>';
    foreach ($cats as $cat) {
        echo '<li>' . esc_html($cat->name) . ' (ID: ' . $cat->term_id . ', count: ' . $cat->count . ')</li>';
    }
    echo '</ul>';
}

Вызовите эту функцию до и после удаления, чтобы убедиться, что все пустые категории успешно удалены.

Как автоматически удалять неактивных пользователей WordPress
07.02.2026
WooCommerce: как автоматически изменять статус заказа при создании
18.05.2026
Как удалить или заблокировать регистрацию пользователей в WordPress
09.01.2026
Автоматическое удаление непроданных товаров WooCommerce по времени
26.05.2026
Как изменить структуру URL в WordPress без плагинов
24.01.2026