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

|

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

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

Категории — это способ структурировать контент и помочь пользователям и поисковым системам быстрее находить нужные материалы. Однако со временем появляются категории, которые либо не имеют постов, либо содержат слишком мало контента, что делает их малоинформативными и даже вредными для юзабилити и SEO.

Автоматизация отключения таких категорий помогает:

Давайте рассмотрим, как это реализовать на практике.

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

Для начала нам нужно определить, что считать неиспользуемой категорией. Обычно это категории с нулевым количеством записей, либо с количеством постов ниже определенного порога, например, менее 3.

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

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

function wpdetect_get_unused_categories($min_posts = 1) {
    $args = [
        'taxonomy' => 'category',
        'hide_empty' => false
    ];
    $categories = get_terms($args);
    $unused = [];
    foreach ($categories as $category) {
        if ($category->count < $min_posts) {
            $unused[] = $category;
        }
    }
    return $unused;
}

Вызов wpdetect_get_unused_categories(1) вернет все категории с 0 постов, а wpdetect_get_unused_categories(3) — все категории с менее 3 постов.

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

Отключение категории в WordPress можно реализовать разными способами, поскольку стандартного статуса «отключена категория» нет. Чаще всего применяются следующие методы:

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

Как скрыть категорию из меню и виджетов

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

function wpdetect_exclude_unused_categories($terms, $taxonomies, $args) {
    if (in_array('category', $taxonomies)) {
        $min_posts = 1; // порог для исключения
        foreach ($terms as $key => $term) {
            if ($term->count < $min_posts) {
                unset($terms[$key]);
            }
        }
    }
    return $terms;
}
add_filter('get_terms', 'wpdetect_exclude_unused_categories', 10, 3);

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

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

Для предотвращения назначения неиспользуемых категорий к новым постам можно применить фильтр wp_terms_checklist_args — он позволяет модифицировать список категорий в метабоксе.

function wpdetect_disable_unused_categories_selection($args, $post_id) {
    $min_posts = 1;
    $unused_cats = wpdetect_get_unused_categories($min_posts);
    $disabled_ids = wp_list_pluck($unused_cats, 'term_id');

    $args['disabled_categories'] = $disabled_ids;
    return $args;
}
add_filter('wp_terms_checklist_args', 'wpdetect_disable_unused_categories_selection', 10, 2);

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

function wpdetect_disable_categories_script() {
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function () {
        let disabledCats = <?php echo json_encode($disabled_ids); ?>;
        disabledCats.forEach(function(catId) {
            let checkbox = document.querySelector('input[type="checkbox"][value="'+catId+'"][name="post_category[]"]');
            if (checkbox) {
                checkbox.disabled = true;
                checkbox.parentElement.style.color = '#aaa';
            }
        });
    });
    </script>
    <?php
}
add_action('admin_footer-post.php', 'wpdetect_disable_categories_script');
add_action('admin_footer-post-new.php', 'wpdetect_disable_categories_script');
<

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

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

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

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

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

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

Пример регистрации WP-Cron задачи:

function wpdetect_schedule_category_cleanup() {
    if (!wp_next_scheduled('wpdetect_category_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpdetect_category_cleanup_hook');
    }
}
add_action('wp', 'wpdetect_schedule_category_cleanup');

function wpdetect_category_cleanup() {
    $unused = wpdetect_get_unused_categories(1);
    // Здесь логика для отключения или уведомления админа
    // Например, можно отправить email с перечнем неиспользуемых категорий
}
add_action('wpdetect_category_cleanup_hook', 'wpdetect_category_cleanup');

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

Заключение

Автоматизация отключения и скрытия неиспользуемых категорий — важный шаг для поддержания чистоты структуры WordPress сайта. С помощью приведенных функций и фильтров можно эффективно исключить из интерфейса категории без контента, не удаляя их физически и не рискуя потерять данные. Для упрощения управления рекомендуем рассмотреть использование плагинов типа Clearfy Pro. А для регулярного обслуживания — настроить WP-Cron задачи, чтобы процесс был полностью автоматическим.

Как избежать конфликтов плагинов в WordPress: проверенные методы и примеры кода
01.11.2025
Автоматическое отключение неиспользуемых шорткодов в WordPress: практическое руководство
07.02.2026
Оптимизация загрузки изображений в WordPress: практические методы и примеры
19.11.2025
Как установить автоматический ежедневный бэкап WordPress с помощью WPDetect
10.02.2026
Диагностика и решение проблем со скриптовым выполнением в WooCommerce
06.05.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее