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

|

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

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

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

Категории с очень малым количеством записей (например, 1-2) иногда тоже нецелесообразно оставлять, если они не являются ключевыми для структуры сайта. Их стоит либо объединять с другими, либо удалять.

Регулярное удаление таких категорий помогает:

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

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

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

function wpreboot_delete_empty_categories() {
    $args = array(
        'taxonomy' => 'category',
        'hide_empty' => false
    );
    $categories = get_terms($args);

    foreach ($categories as $category) {
        if ($category->count < 1) {
            wp_delete_term($category->term_id, 'category');
        }
    }
}

// Запуск функции вручную
// wpreboot_delete_empty_categories();

Эту функцию можно повесить на крон-задачу WordPress, чтобы удаление происходило автоматически, например, раз в неделю:

function wpreboot_schedule_category_cleanup() {
    if (!wp_next_scheduled('wpreboot_category_cleanup_hook')) {
        wp_schedule_event(time(), 'weekly', 'wpreboot_category_cleanup_hook');
    }
}
add_action('wp', 'wpreboot_schedule_category_cleanup');

add_action('wpreboot_category_cleanup_hook', 'wpreboot_delete_empty_categories');

Удаление категорий с малым количеством записей

Если нужно удалять категории с количеством постов меньше определённого порога, например, 3, достаточно заменить условие:

if ($category->count < 3) {
    wp_delete_term($category->term_id, 'category');
}

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

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

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

Как добавить исключения для важных категорий

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

function wpreboot_delete_empty_categories_with_exceptions() {
    $exceptions = array(1, 2, 3); // ID категорий, которые нельзя удалять
    $args = array(
        'taxonomy' => 'category',
        'hide_empty' => false
    );
    $categories = get_terms($args);

    foreach ($categories as $category) {
        if (in_array($category->term_id, $exceptions)) {
            continue;
        }
        if ($category->count < 1) {
            wp_delete_term($category->term_id, 'category');
        }
    }
}

Отслеживание результатов и логи

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

function wpreboot_delete_empty_categories_with_log() {
    $log_file = WP_CONTENT_DIR . '/category_cleanup.log';
    $args = array('taxonomy' => 'category', 'hide_empty' => false);
    $categories = get_terms($args);

    foreach ($categories as $category) {
        if ($category->count < 1) {
            $deleted = wp_delete_term($category->term_id, 'category');
            if (!is_wp_error($deleted)) {
                file_put_contents($log_file, date('Y-m-d H:i:s') . " - Deleted category: {$category->name} (ID: {$category->term_id})\n", FILE_APPEND);
            }
        }
    }
}

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

Выводы и рекомендации

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

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

Как избежать ошибок 502 Bad Gateway в WordPress: практические решения
20.01.2026
Как удалить или скрыть авторизацию для определённых пользователей в WordPress
26.03.2026
Как сделать автоматический редирект с удалением WWW в WordPress
13.03.2026
Как создать автоматический отчет по ошибкам в WordPress с помощью плагина
27.12.2025
WooCommerce: как автоматически удалять неактивные заказы
03.06.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙