
🔒 Как скрыть категорию в WordPress: 4 способа шаг за шагом
Главная страница WordPress по умолчанию выводит всё подряд: записи из каждой созданной рубрики смешиваются в общую ленту. Для блога это нормально. Но если вы запускаете интернет-магазин, портфолио или корпоративный сайт, часть категорий на главной просто не нужна.
Хуже того: поисковые роботы индексируют всё, включая служебные и черновые рубрики. Результат, дубли страниц в выдаче, размытый индекс и падение позиций. А посетитель, наткнувшийся на закрытый раздел, получает пустую страницу вместо контента.
К счастью, скрыть категорию в WordPress можно за 5-10 минут, и для этого не нужен разработчик. Ниже четыре работающих способа: от плагина в два клика до аккуратного кода в functions.php. Выбирайте под свою задачу.
💡 Быстрый обзор:
- Установить Ultimate Category Excluder и отметить категории для скрытия.
- Настроить WP Categories Widget для выборочного скрытия в сайдбаре.
- Добавить хук pre_get_posts в functions.php и исключить рубрику по ID.
- Использовать плагин Members со сниппетом для скрытия по ролям пользователей.
Зачем вообще скрывать категории?
WordPress не делает различий между «публичной» и «технической» рубрикой. Всё, что вы создали в «Записи → Рубрики», автоматически попадает в главную ленту и архивы. В одних случаях это удобно, в других, создаёт проблемы:
- Служебные рубрики (например, «Черновики» или «Для редакторов») индексируются и попадают в поиск.
- Категории со старым или неактуальным контентом размывают впечатление от сайта.
- Закрытые разделы (премиум-статьи, материалы для клиентов) становятся видны всем посетителям.
Важный момент: не пытайтесь решить проблему через CSS, display: none скрывает категорию визуально, но поисковики всё равно видят контент и могут расценить это как клоакинг. Штраф от Google в таких случаях почти гарантирован. Правильный путь, исключить рубрику на уровне запросов к базе данных, а не маскировать её стилями.
Способ 1. Ultimate Category Excluder, скрыть категорию за минуту
Самый простой и надёжный метод, плагин Ultimate Category Excluder. На июнь 2026 года у него 50 000+ активных установок, рейтинг 4,2/5 и совместимость с WordPress 6.5+. Разработчик обновляет плагин стабильно, последний релиз вышел в декабре 2025.

Порядок действий:
- В панели WordPress перейдите в Плагины → Добавить новый.
- В поиске наберите «Ultimate Category Excluder», нажмите Установить и затем Активировать.
- После активации в меню «Настройки» появится пункт Category Exclusion, зайдите туда.
- Отметьте галочками категории, которые нужно скрыть с главной, архивов, RSS-ленты и поиска.
- Нажмите Обновить.

Готово. Откройте сайт в режиме инкогнито и убедитесь, что записи из отмеченных рубрик исчезли с главной. Плагин работает на уровне WP_Query, он модифицирует запрос к базе данных, а не прячет блоки через CSS. Поэтому для SEO это полностью безопасно.
Плюсы: ноль кода, подходит новичкам, выборочное исключение (главная, архивы, RSS, по отдельности). Минусы: если вам нужно скрыть категорию только в определённом виджете, этот плагин не помощник, для этого есть инструмент поточнее.
Способ 2. WP Categories Widget, скрыть категорию в виджете
Если задача уже, убрать конкретную рубрику из сайдбара или футера, а не со всего сайта, берите WP Categories Widget. На февраль 2026 года у плагина версия 2.8.1, полная совместимость с актуальным WordPress и 3 000+ активных установок.
Что он умеет:
- Показывать категории любой таксономии (не только стандартные рубрики, но и метки, произвольные таксономии).
- Скрывать заголовок виджета.
- Включать или выключать счётчик постов у каждой категории.
- Выборочно показывать или скрывать любые рубрики прямо из настроек виджета.
Как использовать:
- Установите и активируйте плагин через Плагины → Добавить новый.
- Перейдите во Внешний вид → Виджеты.
- Найдите виджет «WP Categories Widget» и перетащите его в нужную область (сайдбар, футер).

- В настройках виджета задайте заголовок, при желании скройте его. В выпадающем списке «Показать» выберите вариант All Categories или укажите конкретные рубрики, которые должны отображаться.

- Сохраните изменения.
Всё, что не попало в список «показываемых», автоматически скрыто из этого виджета. Обратите внимание: плагин управляет видимостью только внутри своего виджета. На главную ленту и архивы он не влияет, для этого возвращайтесь к способу 1.
Способ 3. Хук pre_get_posts, скрыть категорию через код
Если вы не хотите ставить лишний плагин ради одной функции, можно обойтись парой строк в functions.php. Этот метод изменяет главный цикл WordPress до выполнения запроса, категория исключается на уровне базы данных, а не маскируется.
Важно: перед правкой functions.php сделайте полный бэкап сайта. Ошибка в этом файле положит весь сайт, восстановить его без резервной копии будет непросто.
Вот рабочий сниппет. Он использует хук pre_get_posts и указывает, какую категорию исключить из главной страницы:
1 /** 2 * Исключает заданную категорию с главной страницы. 3 * Замените -5 на ID вашей категории (со знаком минус). 4 */ 5 function sdstudio_exclude_category_from_home( $query ) { 6 if ( ! is_admin() && $query->is_home() && $query->is_main_query() ) { 7 $query->set( 'cat', '-5' ); 8 } 9 return $query; 10 } 11 add_action( 'pre_get_posts', 'sdstudio_exclude_category_from_home' );
В строке 'cat', '-5' число 5, идентификатор категории, которую нужно скрыть. Знак минуса означает «исключить». Как узнать ID нужной рубрики:
- В панели WordPress откройте Записи → Рубрики.
- Наведите курсор на название категории.
- Внизу экрана (в строке состояния браузера) появится URL вида
...taxonomy=category&tag_ID=6, число послеtag_ID=и есть ID.

На скриншоте ID категории «Страны» равен 6. Подставьте своё число, сохраните файл, и записи из этой рубрики исчезнут с главной.
Где разместить код:
- Через FTP: подключитесь к серверу, перейдите в
/wp-content/themes/ваша-тема/, скачайтеfunctions.php, добавьте код в конец файла (перед?>, если он есть) и загрузите обратно. - Через админку: откройте Внешний вид → Редактор тем, выберите активную тему, найдите
functions.phpв правой колонке, вставьте код и нажмите «Обновить файл».

Некоторые хостинг-провайдеры закрывают доступ к редактору тем из соображений безопасности. В этом случае только FTP, или возвращайтесь к плагину из способа 1, он решит задачу без доступа к файлам.
Что улучшено по сравнению с оригинальным рецептом из старых руководств: добавлена проверка ! is_admin() (чтобы не ломать админку) и $query->is_main_query() (чтобы не задеть вторичные запросы виджетов и меню). Без этих проверок код может поломать фильтрацию в админке или сломать вывод меню, проверено на практике.
Способ 4. Скрытие категорий по ролям пользователей
Представьте ситуацию: у вас есть премиум-статьи, доступные только платным подписчикам. Или внутренняя документация для сотрудников. Или закрытый раздел для оптовых клиентов. Обычные методы скрывают категорию от всех, а здесь нужно, чтобы админ и привилегированные пользователи её видели, а гость и базовый подписчик, нет.
Раньше для этой задачи использовали плагин CaPa Protect, но он удалён из репозитория WordPress. На смену пришла более мощная связка: плагин Members (300 000+ установок, рейтинг 4,7/5, версия 3.2.22 на июнь 2026) и небольшой код.

Алгоритм:
- Установите и активируйте Members через «Плагины → Добавить новый».
- Перейдите в Пользователи → Роли. Создайте роль, например «Премиум-подписчик», или используйте существующие.
- Назначьте нужным пользователям эту роль.
- Добавьте в
functions.phpсниппет, который проверяет роль текущего пользователя и исключает категорию для всех, кроме разрешённых:
1 /** 2 * Скрывает категорию с ID 5 от всех, кроме администраторов 3 * и пользователей с ролью premium_subscriber. 4 */ 5 function sdstudio_hide_category_by_role( $query ) { 6 if ( is_admin() || ! $query->is_main_query() ) { 7 return $query; 8 } 9 10 $restricted_cat_id = 5; // замените на ID вашей категории 11 12 if ( current_user_can( 'administrator' ) 13 || current_user_can( 'premium_subscriber' ) ) { 14 return $query; 15 } 16 17 $query->set( 'cat', '-' . $restricted_cat_id ); 18 return $query; 19 } 20 add_action( 'pre_get_posts', 'sdstudio_hide_category_by_role' );
Как это работает: функция проверяет роль текущего пользователя через current_user_can(). Администраторы и премиум-подписчики проходят мимо фильтра, для них категория видна. Все остальные получают модифицированный запрос с исключением рубрики. Тот же хук pre_get_posts, но с привязкой к правам, а не к странице.
Плюс Members в том, что это не просто «костыль для категорий», а полноценный редактор ролей и прав. После установки вы сможете управлять видимостью любых элементов сайта: блоков Gutenberg, страниц, пунктов меню, всё через роли.
Видеоинструкция
Посмотрите наглядное руководство по всем четырём способам, от установки плагина до правки кода:
⁉️🤔 Частые вопросы
Почему нельзя просто скрыть категорию через CSS?
display: noneубирает блок визуально, но поисковые роботы всё равно читают контент. Google расценивает такое расхождение между видимым и индексируемым содержимым как попытку манипуляции (клоакинг). Санкция, ручное понижение позиций или исключение страниц из индекса. Правильное решение, исключение на уровнеWP_Query, а не CSS.
Как скрыть категорию не только с главной, но и из RSS-ленты?
Ultimate Category Excluder (способ 1) умеет это из коробки. В настройках плагина на вкладке «Category Exclusion» отметьте нужные категории и поставьте галочку напротив «RSS Feeds». Если работаете через код (способ 3), замените условие
$query->is_home()на$query->is_home() || $query->is_feed(), категория исчезнет и из ленты.
Что будет с SEO после скрытия категории?
Если вы скрыли рубрику корректно (через плагин или
pre_get_posts), страницы самой категории и её записи остаются доступными по прямым URL и индексируются. Меняется только главная страница и архивы, дубли уходят, а полезный контент остаётся в индексе. Для верности после изменений отправьте карту сайта в Google Search Console на переобход.
Можно ли скрыть категорию от определённого пользователя, а не от роли?
Штатных средств WordPress для этого нет. Способ 4 рассчитан именно на роли, это архитектурное ограничение системы прав. В качестве обходного пути можно создать отдельную роль под конкретного пользователя через Members и применить код из способа 4. Технически это два клика в интерфейсе плагина.
Плагин или код, что выбрать для долгосрочной поддержки сайта?
Зависит от количества правок. Одно скрытие одной категории, код в
functions.php(способ 3) легче и не добавляет лишней нагрузки. Несколько категорий с разными условиями (главная, RSS, поиск), Ultimate Category Excluder (способ 1) удобнее в управлении. Главное правило: не ставьте плагин ради одной галочки, которую можно закрыть тремя строками кода.
Что выбрать под вашу задачу
Четыре способа закрывают все реальные сценарии. Сориентироваться поможет простая матрица:
- Нужно быстро и без кода → Ultimate Category Excluder. Пара кликов, результат сразу, подходит для большинства типовых сайтов.
- Категория мешается только в сайдбаре → WP Categories Widget. Точечное решение без побочных эффектов.
- На сайте и так минимум плагинов, хочется лёгкости → хук
pre_get_postsвfunctions.php. Три строки PHP, ноль лишнего кода. - Контент с разграничением доступа по ролям → Members + сниппет из способа 4. Гибкая система прав, которая пригодится и для других задач.
Попробуйте способ, который ближе к вашей ситуации. Если что-то пойдёт не так, возвращайтесь к бэкапу (вы же его сделали?) и пробуйте следующий. А в комментариях расскажите, какой метод сработал у вас и для какого именно проекта вы скрывали категории.



