W artykule:
- Co będziemy robić
- Czego potrzebujesz
- Konfigurowanie Zapytania
- Konfigurowanie wyjścia
- Uruchamianie pierwszej pętli
- Uruchamianie drugiej pętli
- Uruchamianie trzeciej pętli
- Uruchamianie czwartej pętli
- Zawartość pętli-za pomocą części szablonu
- Stylizacja Postów
- Uruchomienie jednego zapytania dla wielu pętli przynosi korzyści kodowi i Witrynie
Napisałem kilka postów tutaj na blogu o klasie WP_Query i jak jej używać do tworzenia wielu zapytań i wielu pętli.
Jestem wielkim fanem WP_Query i często używać go na stronach klientów i własnej stronie do tworzenia zaawansowanych i niestandardowych zapytań.
Jednak ma swoje wady, jeśli przesadzasz. Jeden czytelnik słusznie skomentował mój ostatni post na temat używania pętli, aby inaczej stylizować swój pierwszy post, że technika, którą demonstrowałem, może być bardziej wydajna.
Więc w tym poście, mam zamiar pokazać, jak używać WP_Query aby utworzyć wiele pętli, ale w najbardziej efektywny sposób-i to przez uruchomienie tylko jednego zapytania, ale następnie za pomocą go do utworzenia wielu pętli.
Zaletą tego jest to, że odwiedzasz bazę danych tylko raz. Następnie można wykorzystać wszystkie dane, które WP_Query pobiera, aby uruchomić tyle pętli, ile potrzebujesz.
Więc zanurkujmy i zobaczmy, jak to działa.
Co będziemy robić
W tym poście zamierzam utworzyć sekcję na górze strony głównej mojej witryny, która wyświetla najnowsze i określone treści z wielu typów postów. Konkretnie, to będzie wyświetlać:
- Mój ostatni post z niestandardowego typu post
- Dwa posty z post typ postu: po jednym z każdej z dwóch kategorii.
- Konkretnej strony.
Oczywistym sposobem, aby to zrobić, byłoby napisanie czterech (a może trzech, jeśli możesz po prostu użyć jednego dla obu postów) instancji WP_Query, z których każdy zwraca jeden post. Ale zamiast tego ucieknę. WP_Query raz, aby pobrać wszystkie posty, których potrzebuję, a następnie uruchomić pętlę cztery razy, aby wyświetlić wymagane posty. Za każdym razem, gdy uruchomię pętlę, użyję zmiennej o nazwie $count i zwiększę jej wartość o 1, aby móc to sprawdzić w następnej pętli.
Czego potrzebujesz
Aby śledzić ten post, potrzebujesz kilku rzeczy:
- Instalacja rozwojowa WordPress
- Edytor kodu
Konfigurowanie Zapytania
Pierwszą rzeczą do zrobienia jest uruchomienie zapytania. Umieszczam ten post w moim pliku szablonu motywu na stronie głównej, pierwsza strona.php. Ale możesz umieścić go w dowolnym miejscu w swoim motywie, w którym chcesz uruchomić wiele pętli.
Uwaga: jeśli pracujesz z motywem innej firmy, umieść to wszystko w motywie podrzędnym, a nie w motywie innej firmy. Jeśli nie wiesz, jak skonfigurować motyw potomny, zapoznaj się z naszym przewodnikiem.
Oto moje zapytanie:
To zapytanie pobierze posty trzech typów postów: posty, strony i mój niestandardowy typ postu książki.
Więc teraz pobraliśmy posty z bazy danych, musimy zacząć konfigurować kod, aby je wypisać.
Konfigurowanie wyjścia
Po zapytaniu i wewnątrz nawiasów, dodaj to:
Tworzy to sekcja element, który będzie zawierał wszystkie nasze posty. Definiuje również zmienną o nazwie $count i ustawia ją na zero. Zrobimy to w górę o jeden po każdej pętli.
Uruchamianie pierwszej pętli
Moja pierwsza pętla wyświetli mój niestandardowy typ postu. Tak więc w pętli, dołączymy tag warunkowy, który sprawdzi, czy ten typ posta. Sprawdzi również, czy wartość $ count wynosi 0, a po uruchomieniu zwiększy tę wartość o 1, aby ponownie zatrzymać pętlę.
Oto kod:
Należy pamiętać, że obejmuje to get_post_type() funkcja do identyfikacji typu post i uruchom pętlę tylko wtedy, gdy jest książka a wartość count to 0. Potem na końcu, $count++ zwiększy wartość zmiennej $ count o 1.
Ostatnim elementem tej pętli jest rewind_posts(). Nie opuszczaj tego, bo zobaczysz, że pętle nie działają poprawnie, ponieważ pominą wszystkie posty innych typów postów, które zostały opublikowane po tym poście „książki”.
Uruchamianie drugiej pętli
Teraz druga pętla. Jest podobny do pierwszego: sprawdza wartość $ count i typ postu, ale także sprawdza kategorię.
Zauważ, że sprawdzamy, czy wartość $count wynosi 1 przed uruchomieniem tej pętli, co będzie, jeśli pierwsza pętla została uruchomiona dla postu 'book’.
Uruchamianie trzeciej pętli
Trzecia pętla jest bardzo podobna do drugiej: sprawdza post w kategorii „Aktualności”, ale nie w kategorii „wordpress”, ponieważ już wyświetliliśmy najnowszy post w tej kategorii. Jeśli nie uwzględniłem tego czeku, ten sam post może być wyświetlany dwa razy.
Uruchamianie czwartej pętli
Czwarta i ostatnia pętla wyprowadza stronę: dla mnie jest to moja strona zapisu do newslettera.
Oto kod:
Zauważ, że oprócz sprawdzania typu postu sprawdzam również ślimaka z post_name wartość.
Po czwartej pętli musimy zamknąć element section i gotowe.
Zawartość pętli-za pomocą części szablonu
Być może zauważyłeś, że w każdej pętli mam tę linię:
Spowoduje to wywołanie pliku include z zawartością mojej pętli. Użycie tego pliku oznacza, że muszę napisać ten kod tylko raz, a nie cztery razy.
Możesz być bardziej zaznajomiony z używaniem get_template_part() funkcja wywołania pętli. Powód, dla którego użyłem include (locate_template() ) zamiast tego, jest to, że można przekazać zmienną tam iz powrotem do części szablonu za pomocą tej funkcji, ale nie z get_template_part(). Więc musisz użyć funkcji, której użyłem.
Oto treść mojej części szablonu:
Rzućmy okiem na niektóre z bardziej zaawansowanych aspektów tego kodu:
- Używam zmiennej o nazwie
$titleaby zdefiniować tytuł, który pojawi się nad postem w każdej pętli. Nie jest to związane z samym postem, ale z kategorią lub typem postu. Zamiast próbować pobierać je dynamicznie, po prostu przypisuję wartość do tej zmiennej w zależności od tego, jaka jest wartość $count. - Dla każdego posta. wartość
$titlebędzie wyświetlany wh3element, a następnie wyróżniony obraz, tytuł i fragment. - Zarówno polecany obraz, jak i tytuł działają jako link do posta lub strony.
Musisz utworzyć własną część szablonu dla zawartości pętli. Dostosuj go, aby działał tak, jak chcesz.
Oto moja lista postów na mojej stronie głównej:

Pojawiają się, ale nie wyglądają za dobrze. Dodajmy trochę stylizacji.
Stylizacja Postów
Dodajmy kilka klas do elementu article w każdej pętli, abyśmy mogli go wystylizować. Edytuj artykuł element w pliku include tak wygląda:
Teraz dodaj trochę stylizacji do arkusza stylów szablonu:
Teraz zapisz to i odśwież swoją stronę. Oto moja z moją siatką postów:

Myślę, że zgodzisz się, że wygląda o wiele lepiej niż prosta lista postów i jest potężniejsza niż tylko lista postów z bloga. Daje mi to o wiele większą elastyczność.
Uruchomienie jednego zapytania dla wielu pętli przynosi korzyści kodowi i Witrynie
Użycie tej techniki lub własnej wersji, aby uruchomić wiele pętli podczas odpytywania bazy danych tylko raz, ma wiele zalet:
- Oznacza to, że masz tylko jedno zapytanie do kodowania i aktualizowania, dzięki czemu kodowanie jest bardziej wydajne. Jest to jeszcze bardziej wydajne dzięki użyciu części szablonu.
- Odpytywając bazę danych tylko raz, unikasz opóźnień i przyspieszasz czas ładowania strony.
- Posiadanie strony, która szybko się ładuje, poprawi wrażenia użytkownika i pozycję w wyszukiwarkach.
Czego tu nie lubić? Wypróbuj tę technikę już dziś ze swoimi postami, kategoriami i niestandardowymi typami postów i zobacz, co możesz zrobić.
Tagi: