
🔒 Jak ukryć kategorię w WordPress: 4 sposoby krok po kroku
Strona główna WordPress domyślnie wyświetla wszystko: wpisy z każdej utworzonej kategorii mieszają się we wspólnym strumieniu. Dla bloga jest to normalne. Jeśli jednak uruchamiają Państwo sklep internetowy, portfolio lub witrynę firmową, część kategorii na stronie głównej jest po prostu zbędna.
Co gorsza: roboty wyszukiwarek indeksują wszystko, włącznie z kategoriami technicznymi i roboczymi. Efektem są duplikaty stron w wynikach wyszukiwania, rozmyty indeks i spadek pozycji. A odwiedzający, który trafi na zamkniętą sekcję, zamiast treści otrzymuje pustą stronę.
Na szczęście ukrycie kategorii w WordPress zajmuje 5-10 minut i nie wymaga programisty. Poniżej cztery sprawdzone sposoby: od wtyczki na dwa kliknięcia po czysty kod w functions.php. Proszę wybrać rozwiązanie odpowiednie do zadania.
💡 Szybki przegląd:
- Zainstalować Ultimate Category Excluder i zaznaczyć kategorie do ukrycia.
- Skonfigurować WP Categories Widget do selektywnego ukrywania w sidebarze.
- Dodać hook pre_get_posts w functions.php i wykluczyć kategorię po ID.
- Użyć wtyczki Members z fragmentem kodu do ukrywania według ról użytkowników.
Po co w ogóle ukrywać kategorie?
WordPress nie rozróżnia kategorii „publicznej" i „technicznej". Wszystko, co utworzą Państwo w „Wpisy → Kategorie", automatycznie trafia do głównego strumienia i archiwów. W niektórych przypadkach jest to wygodne, w innych stwarza problemy:
- Kategorie techniczne (na przykład „Szkice" lub „Dla redaktorów") są indeksowane i trafiają do wyszukiwarki.
- Kategorie ze starą lub nieaktualną treścią psują wrażenie z witryny.
- Zamknięte sekcje (artykuły premium, materiały dla klientów) stają się widoczne dla wszystkich odwiedzających.
Ważna kwestia: nie należy próbować rozwiązywać problemu przez CSS, display: none ukrywa kategorię wizualnie, ale wyszukiwarki i tak widzą treść i mogą uznać to za cloaking. Kara od Google w takich przypadkach jest niemal gwarantowana. Właściwą drogą jest wykluczenie kategorii na poziomie zapytań do bazy danych, a nie maskowanie jej stylami.
Sposób 1. Ultimate Category Excluder, ukrycie kategorii w minutę
Najprostsza i najbardziej niezawodna metoda to wtyczka Ultimate Category Excluder. Według stanu na czerwiec 2026 roku ma ona 50 000+ aktywnych instalacji, ocenę 4,2/5 i zgodność z WordPress 6.5+. Twórca regularnie aktualizuje wtyczkę, ostatnie wydanie ukazało się w grudniu 2025.

Kolejność działań:
- W panelu WordPress proszę przejść do Wtyczki → Dodaj nową.
- W wyszukiwaniu proszę wpisać „Ultimate Category Excluder", kliknąć Zainstaluj, a następnie Aktywuj.
- Po aktywacji w menu „Ustawienia" pojawi się pozycja Category Exclusion, proszę tam wejść.
- Proszę zaznaczyć kategorie, które mają być ukryte ze strony głównej, archiwów, kanału RSS i wyszukiwania.
- Proszę kliknąć Aktualizuj.

Gotowe. Proszę otworzyć witrynę w trybie incognito i upewnić się, że wpisy z zaznaczonych kategorii zniknęły ze strony głównej. Wtyczka działa na poziomie WP_Query, modyfikuje zapytanie do bazy danych, a nie ukrywa bloki przez CSS. Dlatego dla SEO jest to w pełni bezpieczne.
Zalety: zero kodu, odpowiednia dla początkujących, selektywne wykluczanie (strona główna, archiwa, RSS, osobno). Wady: jeśli potrzebują Państwo ukryć kategorię tylko w konkretnym widżecie, ta wtyczka nie pomoże, do tego służy bardziej precyzyjne narzędzie.
Sposób 2. WP Categories Widget, ukrycie kategorii w widżecie
Jeśli zadanie jest węższe, usunięcie konkretnej kategorii z sidebara lub stopki, a nie z całej witryny, proszę sięgnąć po WP Categories Widget. Według stanu na luty 2026 roku wtyczka ma wersję 2.8.1, pełną zgodność z aktualnym WordPress i 3 000+ aktywnych instalacji.
Co potrafi:
- Wyświetlać kategorie dowolnej taksonomii (nie tylko standardowe kategorie, ale także tagi i niestandardowe taksonomie).
- Ukrywać tytuł widżetu.
- Włączać lub wyłączać licznik wpisów przy każdej kategorii.
- Selektywnie pokazywać lub ukrywać dowolne kategorie bezpośrednio z ustawień widżetu.
Jak używać:
- Zainstaluj i aktywuj wtyczkę przez Wtyczki → Dodaj nową.
- Przejdź do Wygląd → Widżety.
- Znajdź widżet „WP Categories Widget" i przeciągnij go w wybrane miejsce (panel boczny, stopka).

- W ustawieniach widżetu wpisz tytuł, opcjonalnie go ukryj. Z listy rozwijanej „Pokaż" wybierz opcję All Categories lub wskaż konkretne kategorie, które mają być widoczne.

- Zapisz zmiany.
Wszystko, co nie trafiło na listę „pokazywanych", jest automatycznie ukrywane w tym widżecie. Proszę zwrócić uwagę: wtyczka kontroluje widoczność tylko wewnątrz swojego widżetu. Nie wpływa na stronę główną ani archiwa, w tym celu proszę wrócić do sposobu 1.
Sposób 3. Hook pre_get_posts, ukrycie kategorii za pomocą kodu
Jeśli nie chcą Państwo instalować dodatkowej wtyczki dla jednej funkcji, można poradzić sobie kilkoma linijkami w functions.php. Ta metoda modyfikuje główną pętlę WordPressa przed wykonaniem zapytania, kategoria jest wykluczana na poziomie bazy danych, a nie maskowana.
Ważne: przed edycją functions.php proszę wykonać pełną kopię zapasową strony. Błąd w tym pliku spowoduje awarię całej strony, a jej przywrócenie bez kopii zapasowej będzie trudne.
Oto działający fragment kodu. Wykorzystuje on hook pre_get_posts i wskazuje, którą kategorię wykluczyć ze strony głównej:
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' );
W linii 'cat', '-5' liczba 5 to identyfikator kategorii, którą należy ukryć. Znak minusa oznacza „wyklucz". Jak sprawdzić ID potrzebnej kategorii:
- W panelu WordPress proszę otworzyć Wpisy → Kategorie.
- Najechać kursorem na nazwę kategorii.
- Na dole ekranu (w pasku stanu przeglądarki) pojawi się URL w postaci
...taxonomy=category&tag_ID=6, liczba potag_ID=to właśnie ID.

Na zrzucie ekranu ID kategorii „Kraje" wynosi 6. Proszę podstawić swoją liczbę, zapisać plik, a wpisy z tej kategorii znikną ze strony głównej.
Gdzie umieścić kod:
- Przez FTP: proszę połączyć się z serwerem, przejść do
/wp-content/themes/ваша-тема/, pobraćfunctions.php, dodać kod na końcu pliku (przed?>, jeśli występuje) i wgrać go z powrotem. - Przez panel administracyjny: proszę otworzyć Wygląd → Edytor motywów, wybrać aktywny motyw, znaleźć
functions.phpw prawej kolumnie, wkleić kod i kliknąć „Zaktualizuj plik".

Niektórzy dostawcy hostingu blokują dostęp do edytora motywów ze względów bezpieczeństwa. W takim przypadku pozostaje tylko FTP lub powrót do wtyczki ze sposobu 1, która rozwiąże problem bez dostępu do plików.
Co ulepszono w porównaniu z oryginalnym przepisem ze starych poradników: dodano sprawdzenie ! is_admin() (aby nie uszkodzić panelu administracyjnego) oraz $query->is_main_query() (aby nie naruszyć zapytań pobocznych z widżetów i menu). Bez tych zabezpieczeń kod może popsuć filtrowanie w panelu administracyjnym lub zepsuć wyświetlanie menu, co zostało sprawdzone w praktyce.
Sposób 4. Ukrywanie kategorii według ról użytkowników
Proszę wyobrazić sobie sytuację: mają Państwo artykuły premium dostępne tylko dla płacących subskrybentów. Albo wewnętrzną dokumentację dla pracowników. Albo zamkniętą sekcję dla klientów hurtowych. Zwykłe metody ukrywają kategorię przed wszystkimi, a tutaj potrzebują Państwo, aby administrator i uprzywilejowani użytkownicy ją widzieli, a gość i podstawowy subskrybent już nie.
Wcześniej do tego zadania używano wtyczki CaPa Protect, ale została ona usunięta z repozytorium WordPress. Zastąpił ją potężniejszy duet: wtyczka Members (ponad 300 000 instalacji, ocena 4,7/5, wersja 3.2.22 na czerwiec 2026) i krótki fragment kodu.

Algorytm:
- Proszę zainstalować i aktywować Members przez „Wtyczki → Dodaj nową".
- Proszę przejść do Użytkownicy → Role. Proszę utworzyć rolę, na przykład „Subskrybent premium", lub użyć istniejących.
- Proszę przypisać wybranym użytkownikom tę rolę.
- Proszę dodać w
functions.phpsnippet, który sprawdza rolę bieżącego użytkownika i wyklucza kategorię dla wszystkich oprócz uprawnionych:
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' );
Jak to działa: funkcja sprawdza rolę bieżącego użytkownika przez current_user_can(). Administratorzy i subskrybenci premium przechodzą przez filtr, dla nich kategoria jest widoczna. Wszyscy pozostali otrzymują zmodyfikowane zapytanie z wykluczeniem kategorii. Ten sam hook pre_get_posts, ale powiązany z uprawnieniami, a nie ze stroną.
Zaletą Members jest to, że nie jest to tylko „proteza dla kategorii", ale pełnoprawny edytor ról i uprawnień. Po instalacji będą Państwo mogli zarządzać widocznością dowolnych elementów witryny: bloków Gutenberga, stron, pozycji menu, wszystko przez role.
Instrukcja wideo
Proszę obejrzeć wizualny przewodnik po wszystkich czterech sposobach, od instalacji wtyczki po edycję kodu:
⁉️🤔 Często zadawane pytania
Dlaczego nie można po prostu ukryć kategorii przez CSS?
display: noneusuwa blok wizualnie, ale roboty wyszukiwarek i tak czytają treść. Google traktuje taką rozbieżność między widoczną a indeksowaną zawartością jako próbę manipulacji (cloaking). Sankcja to ręczne obniżenie pozycji lub usunięcie stron z indeksu. Prawidłowym rozwiązaniem jest wykluczenie na poziomieWP_Query, a nie CSS.
Jak ukryć kategorię nie tylko ze strony głównej, ale i z kanału RSS?
Ultimate Category Excluder (sposób 1) potrafi to od razu. W ustawieniach wtyczki na karcie „Category Exclusion" proszę zaznaczyć odpowiednie kategorie i zaznaczyć pole przy „RSS Feeds". Jeśli pracują Państwo z kodem (sposób 3), proszę zastąpić warunek
$query->is_home()na$query->is_home() || $query->is_feed(), kategoria zniknie również z kanału.
Co stanie się z SEO po ukryciu kategorii?
Jeśli ukryli Państwo kategorię poprawnie (przez wtyczkę lub
pre_get_posts), strony samej kategorii i jej wpisy pozostają dostępne pod bezpośrednimi adresami URL i są indeksowane. Zmienia się tylko strona główna i archiwa, duplikaty znikają, a wartościowa treść pozostaje w indeksie. Dla pewności po zmianach proszę przesłać mapę witryny w Google Search Console do ponownego przeindeksowania.
Czy można ukryć kategorię przed konkretnym użytkownikiem, a nie przed rolą?
Standardowe środki WordPress tego nie umożliwiają. Sposób 4 jest przeznaczony właśnie dla ról, jest to architektoniczne ograniczenie systemu uprawnień. Jako obejście można utworzyć osobną rolę dla konkretnego użytkownika przez Members i zastosować kod ze sposobu 4. Technicznie to dwa kliknięcia w interfejsie wtyczki.
Wtyczka czy kod, co wybrać do długoterminowego utrzymania witryny?
Zależy od liczby modyfikacji. Jedno ukrycie jednej kategorii: kod w
functions.php(sposób 3) jest lżejszy i nie dodaje zbędnego obciążenia. Kilka kategorii z różnymi warunkami (strona główna, RSS, wyszukiwarka): Ultimate Category Excluder (sposób 1) jest wygodniejszy w zarządzaniu. Główna zasada: nie instalują Państwo wtyczki dla jednego checkboxa, który można obsłużyć trzema linijkami kodu.
Co wybrać do swojego zadania
Cztery sposoby pokrywają wszystkie realne scenariusze. W orientacji pomoże prosta matryca:
- Potrzebują Państwo szybko i bez kodu → Ultimate Category Excluder. Kilka kliknięć, wynik od razu, pasuje do większości typowych witryn.
- Kategoria przeszkadza tylko w sidebarze → WP Categories Widget. Rozwiązanie punktowe bez skutków ubocznych.
- Na witrynie jest już i tak minimum wtyczek, zależy Państwu na lekkości → hook
pre_get_postswfunctions.php. Trzy linijki PHP, zero zbędnego kodu. - Treść z rozgraniczeniem dostępu według ról → Members + snippet ze sposobu 4. Elastyczny system uprawnień, który przyda się również do innych zadań.
Proszę wypróbować sposób, który jest bliższy Państwa sytuacji. Jeśli coś pójdzie nie tak, proszę wrócić do kopii zapasowej (zrobili ją Państwo, prawda?) i spróbować następnego. A w komentarzach proszę opowiedzieć, która metoda zadziałała u Państwa i dla jakiego konkretnie projektu ukrywali Państwo kategorie.



