W artykule:
Możliwość edycji pętli WordPress daje dużą kontrolę nad projektem i treścią witryny WordPress.
Często tworzę niestandardowe pętle, czasami edytując standardową pętlę, a czasami używając WP_Query
aby utworzyć zupełnie nowe pętle.
Ale w niektórych przypadkach chcę pójść dalej. Chcę wyświetlić pierwszy post w mojej pętli inaczej niż kolejne posty. Może to być poprzez dodanie niestandardowej stylizacji lub może to być spowodowane tym, że chcę wyświetlić inną zawartość.
Na przykład mogę wyświetlić zawartość postu dla pierwszego postu, ale tylko fragment dla kolejnych postów. Mogę też użyć wyróżnionego obrazu o innej wielkości lub zastosować różne klasy CSS do pierwszego postu.
W ten sposób możesz wyróżnić swój ostatni post, zwracając na niego uwagę i zachęcając odwiedzających do przeczytania go lub kliknięcia. Może również poprawić układ witryny, zrywając rzeczy i tworząc bardziej zróżnicowany projekt.
W tym poście pokażę Ci, jak korzystać z WP_Query
Klasa do tego. Pokażę Ci, jak skonfigurować niestandardowe zapytanie dla wszystkich postów za pomocą WP_Query
a potem pokażę Ci, jak utworzyć drugie zapytanie, które dotyczy tylko pierwszego postu.
W opracowanym przykładzie pokażę Ci, jak to zrobić na niestandardowym szablonie strony, używając WP_Query
aby uruchomić dwa oddzielne zapytania. A potem pokażę Ci jak zastosować tę technikę do Standardowej pętli, edytując standardowy szablon archiwum i używając pre_get_posts do zmiany standardowej pętli.
Uwaga: Jeśli nie znasz WP_Query
i jego niesamowitą moc, a następnie sprawdź nasz dogłębny Przewodnik po zdobywaniu WP_Query.
Czego potrzebujesz
Aby śledzić ten post, potrzebujesz kilku rzeczy:
- Instalacja rozwojowa WordPress – nie próbuj tego na swojej stronie NA ŻYWO, dopóki nie zaczniesz działać!
- Edytor kodu
Pierwsze kroki: Tworzenie zapytania
Moja osobista strona ma niestandardowy szablon strony dla mojej strony „książki”. Ta strona wyświetla zawartość dodaną do strony „książki”, a następnie uruchamia pętlę, aby wyświetlić wszystkie moje książki. Odbywa się to za pomocą niestandardowego typu post.
Twoja pętla może być bardzo inna-możesz używać zwykłych postów, może to być plik szablonu archiwum, plik szablonu dla niestandardowego typu postu lub cokolwiek, nad czym nie chcesz pracować. Nie musisz więc pracować z niestandardowym szablonem strony, aby użyć tej techniki. Jeśli skupisz się tylko na samej pętli, to pokaże Ci, jak działa technika i możesz zastosować ją do własnej witryny.
Oto moja strona z jedną pętlą wyprowadzającą wszystkie moje książki w siatce 2x 2:

Użyłem jakiegoś obiektowego CSS, który jest w moim motywie, aby utworzyć siatkę 2×2 wyświetlającą każdą z moich książek. W pętli mam tytuł, fragment i polecany obraz.
Oto pętla, która działa dla wszystkich moich postów:
Zobaczysz, że moja pętla ma tylko jeden argument: Typ posta. Wyświetla wszystkie posty tego typu, najnowsze pierwsze.
Ale to, co chcemy zrobić, to wyświetlić pierwszy post inaczej. Zróbmy to.
Tworzenie osobnej pętli dla pierwszego posta
Aby wyświetlić pierwszy post w inny sposób, musimy utworzyć osobną pętlę, która po prostu uruchamia ten post.
Aby to zrobić, potrzebujesz dwóch argumentów: jednego dla typu postu i jednego dla liczby postów, która jest posts_per_page
kłótnia. Ustaw to na 1
.
Zacznij od powielenia oryginalnej pętli, aby mieć dwie pętle w pliku szablonu, obie za pomocą WP_Query
. Teraz edytuj argumenty dla pierwszego tak, aby brzmiały następująco:
To pobierze tylko najnowszy post. Ale nie ma sensu tego robić, chyba że chcesz coś zmienić w pierwszej pętli.
Chcę wydrukować fragment oraz treść. Chcę również dodać trochę stylizacji dla układu, aby wyróżniony obraz i fragment pojawił się nad treścią.
Oto nowa wersja części pętli, która wyświetla sam post, tylko dla pierwszego postu:
Zobaczysz, że jest tam dodatkowy kod dla zawartości, i że dodałem dodatkowe załączenie div
elementy do stylizacji układu-ponownie wykorzystuje to stylizację, która jest już obecna w moim motywie.
Oto pierwszy post na mojej stronie:

Wygląda dobrze. Być może zauważyłeś, że usunąłem również link do odkrywania książki (ponieważ cała treść jest tutaj na głównej stronie książek), a zamiast tego jest przycisk do zakupu książki, który jest pobierany z treści postu.
Zmiana pętli dla kolejnych postów
Ale jest problem.
Oto zrzut ekranu pokazujący pierwszy post i posty po nim:

Pierwszy post jest obecnie powielany. Jest pobierany przez pętlę, która była tam pierwotnie, a także jest pobierany przez nową pętlę tylko dla pierwszego postu.
Jest to naprawione przez dodanie dodatkowego argumentu do drugiej pętli – the offset
kłótnia. To mówi WordPress, aby pominąć określoną liczbę postów przed pobraniem postów do wyjścia. Ponieważ wyświetliliśmy jeden post w pierwszej pętli trasy, musimy go zrównoważyć.
Uwaga: Jeśli kiedykolwiek używasz tej techniki, posts_per_page
argument za pierwszą pętlą i offset
argument dla drugiej pętli powinien być taki sam, nie zawsze może to być 1.
W drugiej pętli Zmień argumenty, aby wyglądały tak:
Teraz, gdy odświeżysz stronę, zobaczysz, że pierwszy post nie jest duplikowany:

Tak lepiej! To koniec. Utworzono niestandardową stronę z dwiema pętlami, z których jedna wyświetla dodatkową zawartość dla ostatniego postu.
Zastosowanie tej techniki do Standardowej pętli
Ale co, jeśli na twojej stronie działa standardowa pętla? W takim przypadku możesz edytować plik szablonu, na którym działa ta strona, dodając tylko jedno dodatkowe zapytanie za pomocą WP_Query
. Nie musisz pisać dwóch nowych zapytań.
Istnieją dwa etapy tej techniki:
- Dodaj dodatkowe zapytanie do pliku szablonu, używając
WP_Query
. - W pliku funkcji motywu użyj
pre_get_posts
aby zmienić standardową pętlę w tym typie archiwum, aby pominąć pierwszy post.
Dodawanie dodatkowego zapytania
Najpierw otwórz plik szablonu, który chcesz edytować. Będzie to dowolny plik szablonu archiwum. W moim przypadku, gdybym używał standardowego pliku szablonu do wyprowadzania mojego niestandardowego typu postu, plik zostanie wywołany archiwum-rmcc_book.php.
Przed pętlą główną dodaj dodatkową pętlę za pomocą WP_Query
. Zrobisz to w podobny sposób jak w powyższej metodzie, kopiując i edytując zawartość pętli głównej, ale umieszczając ją w zapytaniu zasilanym przez WP_Query
. Nie zapominaj, że nadal potrzebujesz post_type
argument pomimo faktu, że jesteś w szablonie archiwum dla tego typu postu.
Zapisz plik szablonu,a twój pierwszy post pojawi się dwa razy, tak jak w moim przykładzie.
Pomijanie pierwszego postu w głównym zapytaniu
Nie można bezpośrednio edytować argumentów głównego zapytania w pliku archiwum. Zamiast tego musisz użyć pre_get_posts
hak do tego. Otwórz swój funkcje.php plik (lub utwórz go, jeśli jeszcze go nie masz) i dodaj coś takiego:
Zobaczysz tutaj, że używane są trzy tagi warunkowe: jeden do sprawdzenia, czy nie jesteśmy na ekranach administratora, drugi do sprawdzenia, czy jest to główne zapytanie uruchomione i trzeci do sprawdzenia, czy jesteśmy na stronie Archiwum dla tego typu postu. Tag warunkowy, którego używasz dla swojego typu postu (lub kategorii lub czegokolwiek innego), można znaleźć w Kodeksie WordPress.
Zapisz swój plik funkcji, a przekonasz się, że pierwszy post jest wyprowadzany za pomocą niestandardowej pętli, a następnie kolejne posty są wyprowadzane za pośrednictwem standardowej pętli.
Uwaga: ta metoda może czasami przerwać paginację. Jeśli tak się stanie, postępuj zgodnie z poniższymi wskazówkami.
WP_Query Pozwala Wyróżnić Najnowszy Post
Korzystając z tej techniki, możesz użyć WP_Query
klasy, aby wyświetlić dodatkową zawartość do ostatniego postu, lub stylizować go inaczej. Jak widać na moim przykładzie, użyłem go, aby moja najnowsza Książka wyróżniała się na tle innych.
Można to zastosować do pętli utworzonej przy użyciu WP_Query
Klasa do do Standardowej pętli w pliku szablonu motywu-w zależności od tego, którego używasz. Gdy to zrobisz, twój najnowszy post będzie się wyróżniał i przyciągał uwagę czytelników.