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

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

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

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

  • Плохой пользовательский опыт — посетители могут видеть категории без контента, что сбивает с толку.
  • Негативное влияние на SEO — поисковые системы могут считать такие страницы некачественными, что плохо сказывается на индексации.
  • Загромождение админпанели — сложнее управлять таксономиями при большом количестве пустых категорий.

Чтобы найти пустые категории, можно использовать стандартный запрос WordPress или SQL-запрос к базе данных. Вот пример запроса WP_Query для поиска пустых категорий:

function wpmentor_get_empty_categories() {
    $args = [
        'taxonomy' => 'category',
        'hide_empty' => true // по умолчанию скрывает пустые
    ];
    $all_categories = get_terms($args);

    $empty_categories = [];
    $all_terms = get_terms(['taxonomy' => 'category', 'hide_empty' => false]);
    foreach ($all_terms as $term) {
        if ($term->count === 0) {
            $empty_categories[] = $term;
        }
    }
    return $empty_categories;
}

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

Автоматизация удаления пустых категорий с помощью WP-Cron

Ручное удаление пустых категорий — рутинная и утомительная задача. Оптимальным решением будет автоматизация с помощью планировщика WP-Cron. Ниже приведён пример функции, которая удаляет пустые категории старше 30 дней, и настройка регулярного задания.

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

function wpmentor_remove_old_empty_categories() {
    $days_limit = 30;
    $empty_categories = wpmentor_get_empty_categories();
    $now = current_time('timestamp');

    foreach ($empty_categories as $category) {
        $term_id = $category->term_id;
        $term = get_term($term_id, 'category');
        if (!$term || is_wp_error($term)) continue;

        // Проверяем дату создания категории
        $term_created = get_term_meta($term_id, 'wpmentor_term_created', true);

        if (!$term_created) {
            // Если даты нет, устанавливаем текущую
            update_term_meta($term_id, 'wpmentor_term_created', $now);
            continue;
        }

        $days_passed = ($now - $term_created) / DAY_IN_SECONDS;
        if ($days_passed > $days_limit) {
            wp_delete_term($term_id, 'category');
        }
    }
}

// Планирование задачи
add_action('wpmentor_cron_delete_empty_cats', 'wpmentor_remove_old_empty_categories');

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

В этом коде мы сохраняем дату создания категории в мета-данных термина при первом обнаружении пустой категории, а затем удаляем её, если она пустая и старше 30 дней. Задача запускается ежедневно.

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

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

1. Term Management Tools

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

Скачать можно здесь: https://ru.wordpress.org/plugins/term-management-tools/

2. WP Sweep

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

Подробнее и скачать: https://ru.wordpress.org/plugins/wp-sweep/

Как использовать WPShop Clearfy Pro для оптимизации таксономий

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

Для этого перейдите в раздел "Оптимизация" → "Таксономии" и активируйте опцию удаления пустых категорий. Clearfy позволяет настроить расписание очистки, что удобно для автоматической поддержки порядка.

Советы и рекомендации по безопасности и тестированию

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

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

Если вы используете WP-Cron для автоматизации, помните, что он зависит от посещаемости сайта. Для критически важных задач можно настроить системный cron на сервере, вызывающий wp-cron.php с нужной периодичностью.

Выводы

Удаление старых пустых категорий — важная задача для поддержания чистоты и оптимизации сайта на WordPress. Автоматизация с помощью WP-Cron и собственного кода позволяет регулярно очищать таксономии без лишних усилий. Плагины Term Management Tools, WP Sweep и Clearfy Pro предоставляют удобные инструменты для тех, кто предпочитает готовые решения.

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

WooCommerce: как исправить проблему с обновлением стоимости товара при добавлении в корзину
29.04.2026
Как удалить версии записей в WordPress для оптимизации базы данных
18.11.2025
Как автоматизировать сбор и отправку отзывов в WordPress
08.03.2026
Как удалить проблемы с неотображением CSS в WordPress
19.02.2026
Как автоматизировать удаление старых записей через WP-Cron в WordPress
31.01.2026