Как удалить или скрыть категории из публикаций WordPress

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

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

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

  • Нужно скрыть технические категории от посетителей;
  • Не выводить определённые категории в ленте блога или на главной странице;
  • Исключить категории из RSS, чтобы не распространять определённый контент;
  • Настроить отображение категорий под конкретные задачи сайта.

Стандартных настроек для этого в админке WordPress нет, поэтому приходится использовать дополнительные методы.

Способы удаления или скрытия категорий из публикаций

1. Использование параметров запроса WP_Query

Если у вас есть контроль над выводом записей через WP_Query, вы можете исключить определённые категории по ID с помощью параметра category__not_in. Например, чтобы исключить категории с ID 5 и 12:

$args = [
    'post_type' => 'post',
    'category__not_in' => [5, 12],
    'posts_per_page' => 10
];
$query = new WP_Query($args);

Так записи из категорий 5 и 12 не попадут в выборку. Это простой и надёжный способ, если вы создаёте кастомные циклы вывода.

2. Исключение категорий в основный запрос через filter pre_get_posts

Если нужно изменить вывод на главной странице или в блоге без изменения шаблонов, можно использовать фильтр pre_get_posts в файле functions.php вашей темы или в плагине. Например, чтобы исключить категории 5 и 12 из главной ленты:

function wpma_exclude_categories_from_home($query) {
    if ($query->is_home() && $query->is_main_query()) {
        $query->set('category__not_in', [5, 12]);
    }
}
add_action('pre_get_posts', 'wpma_exclude_categories_from_home');

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

3. Скрытие категорий из RSS-ленты

Чтобы исключить категории из RSS, тоже можно использовать фильтр pre_get_posts, но с проверкой на запрос RSS:

function wpma_exclude_categories_from_rss($query) {
    if ($query->is_feed() && $query->is_main_query()) {
        $query->set('category__not_in', [5, 12]);
    }
}
add_action('pre_get_posts', 'wpma_exclude_categories_from_rss');

Так записи из указанных категорий не попадут в RSS-поток.

4. Полное удаление категории из админки с помощью плагина Clearfy Pro

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

5. Удаление вывода категории из шаблонов темы

Если вам нужно скрыть отображение категории в метаинформации записи (например, возле заголовка или под ним), можно отредактировать шаблоны темы. Обычно категории выводятся функцией the_category(). Для удаления можно заменить или закомментировать этот вызов в файлах темы, например в single.php или content.php.

Пример комплексного решения: исключаем категории из главного запроса и скрываем их отображение

Ниже пример кода, который можно добавить в functions.php, чтобы исключить категории 5 и 12 из главной страницы, RSS и скрыть их вывод в метаинформации:

function wpma_exclude_categories_everywhere($query) {
    if (($query->is_home() || $query->is_feed()) && $query->is_main_query()) {
        $query->set('category__not_in', [5, 12]);
    }
}
add_action('pre_get_posts', 'wpma_exclude_categories_everywhere');

function wpma_filter_the_category($thelist) {
    // ID категорий для скрытия
    $exclude = [5, 12];
    
    $categories = get_the_category();
    if (!$categories) return $thelist;

    $filtered = [];
    foreach ($categories as $category) {
        if (!in_array($category->term_id, $exclude)) {
            $filtered[] = '<a href="' . esc_url(get_category_link($category->term_id)) . '">' . esc_html($category->name) . '</a>';
        }
    }
    return implode(', ', $filtered);
}
add_filter('the_category', 'wpma_filter_the_category');

Этот код исключит категории из выборки записей и из вывода в списке категорий у записи.

Дополнительные советы по работе с категориями

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

Также полезно проверять ID категорий через админку — для этого достаточно открыть страницу редактирования категории и посмотреть параметр tag_ID в URL.

Заключение

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

Как правильно отлаживать REST API в WordPress: практическое руководство
31.12.2025
Как автоматизировать удаление неиспользуемых медиафайлов в WordPress
15.01.2026
Как создать автоматический импорт из CSV в WordPress
18.01.2026
Автоматическое создание резервных копий WordPress: лучшие плагины и примеры кода
07.11.2025
WooCommerce: устранение проблем с корзиной и оплатой на WordPress
04.05.2026