Mentionsy Mentionsy
Rób WordPressa
Rób WordPressa

172 - Przydatne hooki: pre_get_posts

10.07.2023 ·11 min 57 s · 8 rozdziałów · 1 sponsor

Ten hook jest niezwykle potężnym narzędziem, które pozwala nam wpływać na zapytania dotyczące postów przed ich wykonaniem. Dzięki temu mamy kontrolę nad tym, jakie posty są pobierane z bazy danych i wyświetlane na naszej stronie. Podczas odcinka omówię, jak korzystać z hooka "pre_get_posts" i jakie możliwości oferuje. Dowiesz się, jak zmieniać liczbę wyświetlanych postów na stronie, jak filtrować posty na podstawie różnych kryteriów, takich jak kategorie czy tagi, oraz jak dostosować kolejność sortowania wyników.

0:11 · Sponsorzy i wprowadzenie tematu 1

Cześć, z tej strony Maciej Kuchnik. Witam Cię w podcaście Rób WordPressa. Jeśli korzystasz z WordPressa, to na pewno znajdziesz tu coś dla siebie. Cześć! Witam Cię w 172 odcinku podcastu Rób WordPressa. Niezmiennie jest z nami partner mojego podcastu, czyli marka Cyberfolks, która dostarcza domeny i hostingi pod WordPressy. Jeśli chcesz kupić hosting pod swojego WordPressa, to możesz skorzystać z kodu podcast pisane przez C. Jest to specjalny kod przygotowany dla słuchaczy mojego podcastu i po użyciu tego kodu dostajesz 20% rabatu na usługę hostingu WordPress. Ostatnio w podcaście były trochę takie luźniejsze tematy.

0:31 · Cyberfolks 2

Dzisiaj wracam z serią przydatne hooki i zajmiemy się takim hookiem jak hook pre get posts. Szczerze mówiąc podczas przygotowywania się do nagrywania tego odcinka podcastu, gdzieś tam z tyłu głowy miałem, że przecież na ten temat już nagrałem podcast i że omówiłem ten hook w podcaście, ale potem sprawdziłem na liście i okazało się, że jednak nie. No to dzisiaj będzie właśnie o nim. A jest to myślę taki bardzo, bardzo przydatny hook i dosyć szeroko wykorzystywany zarówno przy jakichś prostszych stronach jak i w takich najbardziej złożonych wdrożeniach WordPressa ten hook jest bardzo często wykorzystywany. Zanim przejdziemy do tego, co dokładnie ten hook robi, to takie małe wprowadzenia.

W WordPressie mamy coś takiego jak klasę WP Query i generalnie ta klasa jest wykorzystywana do wyciągania postów z bazy danych, co za tym idzie potem do wyświetlania gdzieś tam na froncie. Oczywiście nie tylko, ale to jest jej główne zadanie i ta klasa jest używana na przykład w momencie, w którym wchodzisz na bloga na takiej WordPressowej stronie, no to ona jest odpowiedzialna za wyciągnięcie wszystkich wpisów na blogu, za całą paginację, za te wszystkie rzeczy związane z przeglądaniem contentu na naszych stronach. Ona oczywiście bierze też udział w obsłudze takich widoków jak choćby archiwum danej kategorii, danego taga, Danego autora, czy generalnie wszędzie tam, gdzie wyciągamy z bazy danych jakieś wpisy.

1:51 · Klasa WP Query 3

Mogą być to np. podobne wpisy na widoku pojedynczego wpisu, czy inne przeróżne konteksty użycia, bo naprawdę ta klasa to jest taka podstawa WordPressa, jeśli chodzi o programowanie i o działanie z WordPressem, tak bardziej od strony kodu. I tutaj, jeśli chcemy wyciągnąć sobie jakieś konkretne posty, no to mamy tam cały szereg parametrów, które możemy podać. Przykładowo typ posta, czy chodzi nam o posty blogowe, o strony, o produkty e-commerce'owe, czy cokolwiek innego. No to podajemy sobie tam typ posta, jakieś informacje na temat tego, ile postów ma zostać wyciągniętych, według jakich kryteriów. Możemy tam podać różne kryteria związane choćby z polami postmeta, czyli na przykład wyciągnąć posty

które mają pole post meta ustawione na jakąś konkretną wartość. Naprawdę zastosowań tej klasy jest bardzo bardzo dużo i ma ona bardzo szerokie pole takiej można powiedzieć konfiguracji jeśli chodzi o wyciąganie tych postów. WordPress wyświetlając jakieś konkretne widoki, np. widok bloga czy archiwum kategorii, przyjmuje jakieś tam konkretne parametry, według których po prostu wyświetla te wpisy. I czasem się zdarza tak, że jest prawie dobrze, że mamy np. do zmiany kolejność wyświetlania wpisów albo liczbę tych wpisów na pojedynczej podstronie, bądź jakieś inne drobne modyfikacje, które tak naprawdę są bez sensu, żeby pisać je od podstaw, tzn. pisać cały ten widok i całą obsługę tego wszystkiego.

Wystarczyłoby zmienić tylko jakiś jeden mały parametr i już wszystko byłoby zgodne z naszymi założeniami. No i tu cały na biało wjeżdża hook pre get posts. Przy jego pomocy możesz zmodyfikować właśnie wszystkie te parametry, według których są wyciągane posty na przykład na twoim blogu, czy w jakichś innych kontekstach. Będę się tutaj posługiwał przykładem bloga. No bo myślę, że jest on taki najbardziej obrazowy i myślę, że najłatwiej będzie wytłumaczyć możliwości tego hooka. I załóżmy, że masz potrzebę zmodyfikować sobie na blogu kolejność, w jakiej wyświetlone są twoje wpisy. Domyślnie WordPress robi to tak, że najnowsze wpisy lądują najwyżej i każdy nowy wpis wpada na samą górę strony, ale być może ty będziesz miał taką potrzebę, żeby posortować sobie to np. alfabetycznie według tytułu

8:31 · Zasięg zmian 2

I finalnie te warunki są łączone i wyświetlane posty uwzględniają wszystkie te zmiany, które wprowadziliśmy. Tutaj również możemy bazować na danych tego obiektu, bo mamy tam też dostępne informacje choćby o tym, jaki typ posta jest obsługiwany. Więc jeśli chcemy sobie ograniczyć działanie tych naszych zmian do jakiegoś jednego konkretnego typu posta, czy zdefiniowanego w samym WordPressie, tak jak na przykład posty blogowe, Czy np. do jakiegoś własnego typu posta, który sobie zdefiniowaliśmy czy za pomocą kodu, czy za pomocą jakiejś wtyczki, to oczywiście możemy też wykorzystać dane samego obiektu. I wtedy bez problemu sobie też ograniczamy zasięg działania tych naszych zmian.

Tutaj odsyłam Cię do dokumentacji, szczególnie do dokumentacji klasy WP Query, bo tam masz wszystkie parametry opisane szczegółowo i za pomocą tego hooka możesz właśnie modyfikować te parametry dla konkretnych zapytań. Są też tam przykłady kodu, z których możesz skorzystać. To wszystko oczywiście podlinkuję w notatkach do tego odcinka pod adresem maciejkuchnik.pl łamane na 172. I na dzisiaj to tyle. Jeśli nie znasz jeszcze tego hooka, to Zainteresuj się nim, ponieważ daje on naprawdę potężne możliwości i jest bardzo często przydatny przy różnych projektach, od tych prostych po jakieś bardziej skomplikowane. Jeśli jeszcze nie subskrybujesz mojego podcastu, to zasubskrybuj go czy to na YouTubie, na Spotify, w Apple Podcast czy innych aplikacjach podcastowych i zapraszam Cię również na moje media społecznościowe, szczególnie na Instagrama, na TikToka, gdzie od kilku dni wrzucam taką serię Ogarnij WordPressa.

10:21 · Podsumowanie i zakończenie 1

I to jest taka seria, gdzie w takich krótkich, około minutowych filmikach dzielę się takimi prostymi poradami na temat tego, co możesz zrobić, aby Twój WordPress był w lepszej kondycji i o czym należy też pamiętać przy W tworzeniu jak i utrzymywaniu swoich czy stron swoich klientów. Więc jeśli jeszcze gdzieś tam mnie nie obserwujesz w mediach społecznościowych no to serdecznie Cię zapraszam. Będziemy w kontakcie. A na dzisiaj to tyle. Żegnam się z Wami i słyszymy się w kolejnym odcinku. Cześć.

Pokazano wszystkie 9 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.