
Jednym z częstszych pytań pojawiających się na forach i grupach WordPress jest: jak ukryć wpisy z wybranej kategorii, aby nie pojawiały się na stronie głównej? Choć dla początkujących użytkowników może wydawać się to skomplikowane, w rzeczywistości istnieje proste rozwiązanie, które można wdrożyć w zaledwie kilku krokach. W tym artykule wyjaśnię Ci, jak to zrobić krok po kroku, a także podzielę się dodatkowymi wskazówkami, które mogą Ci się przydać.
Spis treści
Po co ukrywać wpisy z wybranych kategorii?
Zarządzanie treściami na stronie głównej to kluczowy element w budowaniu atrakcyjnej witryny. Często zdarza się, że nie chcemy pokazywać tam wszystkich wpisów – zwłaszcza tych z kategorii takich jak ogłoszenia, promocje czy starsze artykuły. Ukrycie tych kategorii może pomóc w lepszym zarządzaniu treścią, zwiększeniu czytelności strony oraz skierowaniu uwagi użytkowników na najważniejsze informacje.
Na przykład, jeśli prowadzisz blog, na którym publikujesz zarówno artykuły eksperckie, jak i wpisy promocyjne, możesz chcieć ukryć te drugie, aby strona główna wyglądała bardziej profesjonalnie.
Jak ukryć wpisy z jednej kategorii?
Najlepszym sposobem na ukrycie wpisów z wybranej kategorii jest modyfikacja głównego zapytania WordPressa za pomocą filtra pre_get_posts. To narzędzie pozwala ingerować w sposób, w jaki WordPress pobiera treści do wyświetlenia, bez konieczności tworzenia dodatkowych zapytań do bazy danych.
Oto kod, który należy dodać do pliku functions.php Twojego motywu:
function prefiks_exclude_category_from_homepage( $query ) {
if ( !is_admin() && $query->is_main_query() && is_home() ) {
$category_not_in = $query->get( 'category__not_in', array() );
if ( is_scalar($category_not_in) ) {
$category_not_in = array( $category_not_in );
} elseif ( !is_array($category_not_in) ) {
$category_not_in = array();
}
$category_not_in[] = 3; // <- zmień 3 na ID kategorii, którą chcesz ukryć
$query->set( 'category__not_in', $category_not_in );
}
}
add_filter( 'pre_get_posts', 'prefiks_exclude_category_from_homepage' );
W powyższym kodzie liczba 3 oznacza ID kategorii, którą chcesz ukryć.
Jak sprawdzić ID kategorii?
Nie każdy użytkownik WordPressa od razu wie, gdzie znaleźć ID kategorii. To jednak bardzo proste:
- Przejdź do panelu administracyjnego WordPressa.
- Wejdź w sekcję Kategorie.
- Najedź kursorem na nazwę wybranej kategorii – w dolnym pasku przeglądarki pojawi się adres URL z fragmentem
tag_ID=3. Liczba po znaku równości to właśnie ID kategorii.
Jeśli wolisz bardziej przejrzyste rozwiązanie, możesz skorzystać z wtyczek, takich jak Reveal IDs, które pokazują ID kategorii, wpisów i innych elementów w panelu administracyjnym.
Jak ukryć wiele kategorii?
Jeśli chcesz ukryć więcej niż jedną kategorię, wystarczy dodać ich ID do listy w kodzie. Przykład:
$category_not_in[] = 3; // Kategoria o ID 3
$category_not_in[] = 5; // Kategoria o ID 5
$category_not_in[] = 7; // Kategoria o ID 7
Wpisy z tych kategorii nie będą wyświetlane na stronie głównej.
Co z kategoriami podrzędnymi?
Jedno z najczęściej zadawanych pytań dotyczy tego, czy kod ukrywa również wpisy z kategorii podrzędnych. Odpowiedź brzmi: nie. Kod działa tylko na wpisy przypisane bezpośrednio do wybranej kategorii.
Jeśli chcesz ukryć również wpisy z kategorii podrzędnych, musisz dodać ich ID do kodu:
$category_not_in[] = 3; // Kategoria nadrzędna
$category_not_in[] = 5; // Kategoria podrzędna
$category_not_in[] = 7; // Kolejna kategoria podrzędna
Alternatywnie możesz skorzystać z bardziej zaawansowanych metod, takich jak dynamiczne pobieranie ID wszystkich kategorii podrzędnych za pomocą funkcji WordPressa.
Dlaczego nie używać query_posts()?
W przeszłości popularnym rozwiązaniem było użycie funkcji query_posts(). Jednak obecnie to podejście jest odradzane z kilku powodów:
1️⃣ Niepotrzebne obciążenie bazy danychquery_posts() tworzy dodatkowe zapytania do bazy danych, co może negatywnie wpłynąć na wydajność strony.
2️⃣ Kolizje z wtyczkami i motywami
Korzystanie z własnych zapytań często uniemożliwia działanie innych wtyczek lub motywów, które również modyfikują główne zapytanie.
3️⃣ Brak elastycznościquery_posts() nie daje tak dużej kontroli nad zapytaniami jak pre_get_posts, co ogranicza możliwości dostosowania strony.
Dlatego rekomenduję korzystanie z filtra pre_get_posts, który jest zarówno wydajny, jak i zgodny z najlepszymi praktykami WordPressa.
Jak testować zmiany?
Po dodaniu kodu do pliku functions.php upewnij się, że wszystko działa poprawnie:
- Odśwież stronę główną i sprawdź, czy wpisy z wybranych kategorii zniknęły.
- Przetestuj działanie innych funkcji strony, aby upewnić się, że kod nie wprowadza konfliktów.
- Sprawdź, czy nowe wpisy przypisane do ukrytych kategorii również nie pojawiają się na stronie głównej.
Jeśli zauważysz problemy, sprawdź kod pod kątem błędów i upewnij się, że ID kategorii są poprawne.
Moje podsumowanie
Ukrywanie wpisów z wybranych kategorii to prosty sposób na dostosowanie zawartości strony głównej do swoich potrzeb. Dzięki filtrowi pre_get_posts możesz zrobić to w sposób wydajny i zgodny z najlepszymi praktykami WordPress.
Potrzebujesz pomocy z wdrożeniem tego rozwiązania? Masz pytania dotyczące innych aspektów WordPressa? Napisz do mnie – chętnie pomogę!
Potrzebujesz prostej strony internetowej, a może opieki nad już istniejącą?
Pomagam w tworzeniu czytelnych stron WordPress oraz dbam o ich bezpieczeństwo, aktualizacje i sprawne działanie. Bez zbędnych komplikacji, za to z realnym wsparciem i doradztwem dopasowanym do Twoich potrzeb. Skontaktuj się i zobacz, co da się zrobić.





