Skip to content

Все для WordPress, веб-розробки — і не тільки

🔒 Як приховати категорію в WordPress: 4 способи крок за кроком

🔒 Як приховати категорію в 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.

Встановлення плагіна Ultimate Category Excluder з панелі WordPress

Порядок дій:

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

Готово. Відкрийте сайт у режимі інкогніто й переконайтеся, що записи з позначених рубрик зникли з головної. Плагін працює на рівні WP_Query, він модифікує запит до бази даних, а не приховує блоки через CSS. Тому для SEO це повністю безпечно.

Плюси: нуль коду, підходить новачкам, вибіркове виключення (головна, архіви, RSS, окремо). Мінуси: якщо вам потрібно приховати категорію лише в певному віджеті, цей плагін не помічник, для цього є точніший інструмент.

Спосіб 2. WP Categories Widget, приховати категорію у віджеті

Якщо завдання вужче, прибрати конкретну рубрику із сайдбара чи футера, а не з усього сайту,, беріть WP Categories Widget. Станом на лютий 2026 року плагін має версію 2.8.1, повну сумісність з актуальним WordPress і 3 000+ активних установок.

Що він уміє:

  • Показувати категорії будь-якої таксономії (не лише стандартні рубрики, а й мітки, довільні таксономії).
  • Приховувати заголовок віджета.
  • Вмикати або вимикати лічильник записів біля кожної категорії.
  • Вибірково показувати або приховувати будь-які рубрики прямо з налаштувань віджета.

Як використовувати:

  • Встановіть і активуйте плагін через Плагіни → Додати новий.
  • Перейдіть до Зовнішній вигляд → Віджети.
  • Знайдіть віджет «WP Categories Widget» і перетягніть його в потрібну область (сайдбар, футер).
Перетягування віджета WP Categories Widget у сайдбар WordPress
  • У налаштуваннях віджета задайте заголовок, за бажанням приховайте його. У випадному списку «Показати» виберіть варіант All Categories або вкажіть конкретні рубрики, які мають відображатися.
Вибір приховуваних категорій у налаштуваннях WP Categories Widget
  • Збережіть зміни.

Усе, що не потрапило до списку «показуваних», автоматично приховано з цього віджета. Зверніть увагу: плагін керує видимістю лише всередині свого віджета. На головну стрічку й архіви він не впливає, для цього повертайтеся до способу 1.

Спосіб 3. Хук pre_get_posts, приховати категорію через код

Якщо ви не хочете ставити зайвий плагін заради однієї функції, можна обійтися парою рядків у functions.php. Цей метод змінює головний цикл WordPress до виконання запиту, категорія виключається на рівні бази даних, а не маскується.

Важливо: перед редагуванням functions.php зробіть повний бекап сайту. Помилка в цьому файлі покладе весь сайт, відновити його без резервної копії буде непросто.

Ось робочий сніпет. Він використовує хук pre_get_posts і вказує, яку категорію виключити з головної сторінки:

1/**
2 * Исключает заданную категорию с главной страницы.
3 * Замените -5 на ID вашей категории (со знаком минус).
4 */
5function 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}
11add_action( 'pre_get_posts', 'sdstudio_exclude_category_from_home' );

У рядку 'cat', '-5' число 5, ідентифікатор категорії, яку потрібно приховати. Знак мінуса означає «виключити». Як дізнатися ID потрібної рубрики:

  • У панелі WordPress відкрийте Записи → Рубрики.
  • Наведіть курсор на назву категорії.
  • Унизу екрана (у рядку стану браузера) з’явиться URL виду ...taxonomy=category&tag_ID=6, число після tag_ID= і є ID.
Перегляд ID категорії через наведення на назву рубрики в адмінці WordPress

На скриншоті ID категорії «Країни» дорівнює 6. Підставте своє число, збережіть файл, і записи з цієї рубрики зникнуть із головної.

Де розмістити код:

  • Через FTP: підключіться до сервера, перейдіть до /wp-content/themes/ваша-тема/, завантажте functions.php, додайте код у кінець файлу (перед ?>, якщо він є) і завантажте назад.
  • Через адмінку: відкрийте Зовнішній вигляд → Редактор тем, виберіть активну тему, знайдіть functions.php у правій колонці, вставте код і натисніть «Оновити файл».
Редагування файлу functions.php через редактор тем WordPress

Деякі хостинг-провайдери закривають доступ до редактора тем з міркувань безпеки. У цьому разі тільки FTP або повертайтеся до плагіна зі способу 1, він вирішить задачу без доступу до файлів.

Що поліпшено порівняно з оригінальним рецептом зі старих посібників: додано перевірку ! is_admin() (щоб не ламати адмінку) і $query->is_main_query() (щоб не зачепити вторинні запити віджетів і меню). Без цих перевірок код може поламати фільтрацію в адмінці або зламати вивід меню, перевірено на практиці.

Спосіб 4. Приховування категорій за ролями користувачів

Уявіть ситуацію: у вас є преміум-статті, доступні лише платним передплатникам. Або внутрішня документація для співробітників. Або закритий розділ для оптових клієнтів. Звичайні методи приховують категорію від усіх, а тут потрібно, щоб адмін і привілейовані користувачі її бачили, а гість і базовий передплатник, ні.

Раніше для цього завдання використовували плагін CaPa Protect, але його видалено з репозиторію WordPress. На зміну прийшла потужніша зв'язка: плагін Members (300 000+ встановлень, рейтинг 4,7/5, версія 3.2.22 на червень 2026) і невеликий код.

Плагін Members, керування ролями та правами в WordPress

Алгоритм:

  • Встановіть та активуйте Members через «Плагіни → Додати новий».
  • Перейдіть у Користувачі → Ролі. Створіть роль, наприклад «Преміум-передплатник», або використовуйте наявні.
  • Призначте потрібним користувачам цю роль.
  • Додайте у functions.php сніпет, який перевіряє роль поточного користувача та виключає категорію для всіх, крім дозволених:
1/**
2 * Скрывает категорию с ID 5 от всех, кроме администраторов
3 * и пользователей с ролью premium_subscriber.
4 */
5function 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}
20add_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. Гнучка система прав, яка знадобиться і для інших задач.

Спробуйте спосіб, який ближчий до вашої ситуації. Якщо щось піде не так, повертайтеся до бекапу (ви ж його зробили?) і пробуйте наступний. А в коментарях розкажіть, який метод спрацював у вас і для якого саме проєкту ви приховували категорії.