Jak ukryć wybrane wpisy z bloga WordPress — bez wtyczek do zarządzania dostępem i bez wpływu na SEO
Problem: blog prawniczy z treściami, które nie pasują do głównego feedu
Klient z branży prawniczej prowadził rozbudowany blog merytoryczny. Regularnie publikował artykuły eksperckie — analizy przepisów, omówienia orzeczeń, praktyczne poradniki dla klientów. Obok tych treści pojawiały się jednak wpisy o zupełnie innym charakterze: informacje prasowe, relacje z wydarzeń branżowych, wzmianki o wyróżnieniach i nominacjach. Były to materiały PR-owe, potrzebne z komunikacyjnego punktu widzenia, ale niepasujące do profilu merytorycznego bloga. Użytkownik trafiający na stronę po frazach związanych z prawem pracy czy prawem gospodarczym widział w feedzie wpisy o tym, że kancelaria wzięła udział w konferencji. To rozmywało wizerunek ekspercki serwisu i obniżało czytelność głównej listy artykułów. Klient wiedział, że chce oddzielić te dwa typy treści, ale nie wiedział, jak to zrobić technicznie — bez usuwania wpisów, bez ukrywania ich przed Google, a jednocześnie tak, żeby nie pojawiały się w głównym strumieniu bloga.
Cel wdrożenia: segmentacja contentu bez ingerencji w indeksację
Zadanie technicznie brzmiało prosto, ale wymagało precyzyjnego przemyślenia zakresu działania. Chodziło o to, żeby wybrane wpisy:
- zniknęły z głównej strony blogowej (/blog/ lub inny główny feed),
- pozostały dostępne w obrębie przypisanej kategorii,
- były indeksowane przez Google i dostępne pod bezpośrednim URL,
- nie wymagały instalowania kolejnej wtyczki do zarządzania widocznością.
To ostatnie założenie było istotne z technicznego punktu widzenia. Każda dodatkowa wtyczka to potencjalne ryzyko konfliktów, aktualizacji i obciążenia środowiska. Przy serwisach prawniczych, gdzie stabilność i bezpieczeństwo mają szczególne znaczenie, minimalizowanie liczby aktywnych pluginów jest dobrą praktyką. Rozwiązanie miało być lekkie, precyzyjne i działać na poziomie kodu — bez zbędnych zależności.
Narzędzie: WPCode zamiast functions.php
Do wdrożenia wykorzystaliśmy wtyczkę WPCode, z której regularnie korzystamy przy tego typu zadaniach. WPCode pozwala na dodawanie własnych fragmentów kodu PHP bezpośrednio z poziomu panelu administracyjnego WordPress — bez edytowania pliku functions.php przez FTP czy menedżer plików. To podejście ma kilka konkretnych zalet. Po pierwsze, kod dodany przez WPCode nie zostaje nadpisany przy aktualizacji motywu. Po drugie, każdy snippet można włączyć lub wyłączyć jednym przełącznikiem — bez usuwania kodu z pliku. Po trzecie, WPCode przechowuje historię zmian, co przy pracy na środowisku produkcyjnym jest praktycznym zabezpieczeniem. W przypadku tego klienta zdecydowaliśmy się właśnie na to narzędzie, bo serwis był aktywnie rozwijany i zależało nam na tym, żeby wdrożenie było łatwe do zarządzania w przyszłości.
Mechanizm działania: hook pre_get_posts
Rozwiązanie opiera się na filtrze pre_get_posts, który pozwala modyfikować zapytania do bazy danych WordPress jeszcze przed ich wykonaniem. Zamiast usuwać wpisy z bazy lub zmieniać ich status, kod pobiera listę ID wpisów oznaczonych wskazanym tagiem, a następnie przekazuje tę listę do parametru post__not_in — czyli instrukcji „nie pokazuj tych wpisów”. Warunek działania jest ograniczony do konkretnego adresu URL strony blogowej, co oznacza, że filtr nie wpływa na żadne inne zapytania w serwisie. Wpisy PR-owe pozostają widoczne w swojej kategorii, są dostępne pod bezpośrednim linkiem i nie są wykluczone z indeksacji — Google widzi je tak samo jak wcześniej. Zmienia się wyłącznie ich obecność w głównym feedzie bloga.
Kod i instrukcja wdrożenia krok po kroku
Poniżej kompletny kod wraz z instrukcją wdrożenia przez WPCode.
Krok 1 — Oznacz wpisy PR-owe tagiem
Przed wdrożeniem kodu przypisz do wszystkich wpisów PR-owych wspólny tag. Może to być np. „pr”, „informacje-prasowe” lub dowolny inny slug. Ważne, żeby był spójny — kod filtruje wpisy po tym właśnie identyfikatorze.
Krok 2 — Zainstaluj i aktywuj WPCode
Jeśli wtyczka nie jest jeszcze aktywna, zainstaluj ją z repozytorium WordPress (Wtyczki → Dodaj nową → WPCode). Bezpłatna wersja w pełni obsługuje ten przypadek użycia.
Krok 3 — Dodaj nowy snippet
W panelu przejdź do WPCode → + Dodaj Snippet → Dodaj własny kod. Jako typ kodu wybierz PHP Snippet. Ustaw lokalizację wykonania na Run Everywhere (lub Frontend Only, jeśli zależy Ci na zawężeniu do front-endu).
Krok 4 — Wklej poniższy kod i podmień zmienne
function exclude_tagged_posts_from_selected_page($query) {
if (
!is_admin()
&& !$query->is_single()
&& strpos($_SERVER['REQUEST_URI'], '/TWOJ-ADRES-STRONY/') !== false
) {
$posts = get_posts(array(
'post_type' => 'post',
'posts_per_page' => -1,
'fields' => 'ids',
'tag' => 'TWOJ-TAG'
));
$query->set('post__not_in', $posts);
}
}
add_action('pre_get_posts', 'exclude_tagged_posts_from_selected_page');
Podmień dwie wartości:
- /TWOJ-ADRES-STRONY/ → adres strony blogowej, np. /blog/, /aktualnosci/, /strefa-wiedzy/
- TWOJ-TAG → slug tagu przypisanego do wpisów PR-owych, np. pr, informacje-prasowe
Krok 5 — Aktywuj snippet i zweryfikuj działanie
Zapisz snippet i przełącz go w stan aktywny. Następnie przejdź na stronę bloga w trybie incognito i sprawdź, czy wpisy oznaczone tagiem zniknęły z feedu. Wejdź bezpośrednio na URL jednego z ukrytych wpisów — powinien być w pełni dostępny. Sprawdź też widok kategorii, w której te wpisy są zgrupowane — tam powinny pozostać widoczne.
Wynik: czytelna struktura bloga bez strat w indeksacji
Po wdrożeniu główna lista artykułów bloga kancelarii pokazuje wyłącznie treści merytoryczne — analizy prawne, poradniki, komentarze do przepisów. Wpisy PR-owe funkcjonują osobno, w dedykowanej kategorii, i są w pełni dostępne dla użytkowników, którzy trafiają na nie z wyszukiwarki lub bezpośredniego linka. Google indeksuje je bez żadnych ograniczeń — zmienił się tylko kontekst ich wyświetlania w obrębie serwisu, nie ich dostępność jako takich. Dla klienta oznaczało to konkretny porządek redakcyjny: każdy typ treści ma swoje miejsce, blog ekspercki nie jest zaburzany przez komunikaty wizerunkowe, a odwiedzający widzą spójny, tematycznie jednorodny feed. Takie rozwiązanie nie wymaga żadnej obsługi po wdrożeniu — wystarczy pamiętać o przypisywaniu tagu do kolejnych wpisów PR-owych, a kod zrobi resztę automatycznie.

Potrzebujesz konkretnych działań na swojej stronie internetowej? Napisz do nas.

Filip Fedorowicz
CEO Fill Rank | Expert SEO/Content
Na co dzień wchodzę do świata ludzi z różnorodnych branż, aby popularyzować ich strony i sklepy internetowe w sieci. Z wielką przyjemnością tłumaczę, jak działa SEO i co warto robić, aby nie pozostać w cieniu konkurencji. Łączę SEO, Content, Social Media i AI w spójną strategię, która realnie wspiera rozwój biznesu.
