Na WP_Query klasa jest bardzo potężna. Pozwala tworzyć własne niestandardowe zapytania do uruchomienia w dowolnym miejscu w witrynie WordPress-w głównej treści, na pasku bocznym lub w dowolnym innym miejscu.

Jest to coś, czego często używam, albo w niestandardowych plikach szablonów, albo w obszarach poza treścią, takich jak pasek boczny lub stopka. I straciłem rachubę ile razy kodowałem niestandardowe zapytanie używając WP_Query.

Ale to jest możliwe, aby uniknąć wszystkich tych przeróbek. Jeśli argumenty zapytania można filtrować, można napisać funkcję do zmiany argumentów i uruchomić inne zapytanie w różnych miejscach w witrynie. Oznacza to, że możesz napisać wtyczkę z niektórymi domyślnymi argumentami (lub rzeczywiście bez argumentów w ogóle), a następnie napisać funkcję w swoim motywie (lub w innej wtyczce), która poprawi te argumenty.

To nie zmieni pętli, która działa przy użyciu argumentów zapytania (chociaż jeśli chcesz, możesz również utworzyć inny filtr dla tego), ale to oznacza, że możesz kodować swoje WP_Query instancja raz, a następnie dostosować go, gdy trzeba.

W tym poście pokażę Ci, jak napisać wtyczkę z instancją do filtrowania WP_Query następnie napisz funkcję w pliku funkcji motywu, aby edytować argumenty.

Czego potrzebujesz

Aby śledzić ten post, musisz mieć dostęp do kilku rzeczy:

  • Opracowanie lub testowanie instalacji WordPress z własnym motywem lub motywem potomnym
  • Edytor kodu

Będziesz także potrzebował zrozumienia, jak pisać wtyczki, jak edytować plik funkcji i jak WP_Query działa.

Gotowy? Więc zaczynajmy!

Pisanie wtyczki WP_Query

Zacznij od utworzenia wtyczki. Utwórz nowy folder dla wtyczki w swoim wp-content / wtyczki folderu, a następnie utwórz w nim pusty plik. Zawsze tworzę folder na wypadek, gdybym chciał dodać jakieś style, skrypty lub pliki dołączone do mojej wtyczki w późniejszym terminie.

Oto linie otwierające mój plugin:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Teraz dodajmy WP_Query funkcja. Zacznę od dodania $args zmienna, ale pozostaw ją pustą:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Następnie dodajemy pętlę:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Oto pełna funkcja:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Mamy teraz dość standardowe zapytanie i pętlę. Spowoduje to uruchomienie zapytania opartego na argumentach (które są obecnie puste), a następnie wyprowadzi nagłówek, a następnie listę elementów pobranych z linkami do nich. Może być używany do wyświetlania listy postów za pomocą kategorii, taksonomii, typów postów lub czegokolwiek innego jako argumentów.

W tej chwili jednak nic nie wyświetli, ponieważ te argumenty są puste. Dodajmy kilka argumentów, ale zawińmy je w filtr.

Dodawanie Filtrowalnych Argumentów

Weź $args sekcja Twojego kodu i edytuj go, aby dodać kilka argumentów.

Dodam tylko argument za posts_per_page, aby ograniczyć liczbę postów wyjściowych. Nie będę dodawać żadnych innych argumentów: w ten sposób zostanie wyświetlonych pięć ostatnich postów. Jeśli chcesz, możesz dodać kilka różnych argumentów.

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Jak na razie tak prosto. Teraz Załóżmy te argumenty w filtrze. Oto kod:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

To zawija nasz pojedynczy argument w filtr o nazwie wpmu_filtrable_query, które można następnie podłączyć z innej wtyczki lub z motywu, aby zmienić te argumenty.

Skoro już przy tym jesteśmy, dodajmy filtr do tego nagłówka wewnątrz pętli, ponieważ jest to trochę ogólne.

Edytuj pętlę, aby zawierała filtr:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

I to wszystko. Jeśli nie zdecydujesz się dodać więcej filtrów do pętli, wtyczka jest gotowa.

Korzystanie z filtra w motywie

Następnym krokiem jest napisanie kilku funkcji w swoim motywie.

Pierwszy zadzwoni do wpmu_filtrable_query Hook akcji i wyprowadź go na swoją stronę. Można to nazwać na jeden z wielu sposobów.

Pierwszym z nich jest dołączenie go do Hooka akcji w motywie, za pomocą add_action funkcja. Więc jeśli twój motyw miał hak o nazwie my_theme_sidebar_hook, możesz wyprowadzić zapytanie na pasku bocznym w ten sposób:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Drugim jest kodowanie go bezpośrednio do pliku szablonu motywu. Wolę pracować z hookami tam, gdzie to możliwe, ponieważ dają mi one większą elastyczność, ale jeśli twój motyw nie ma żadnych hooków, może to być najlepsze podejście. Jeśli pracujesz z motywem innej firmy, nie edytuj bezpośrednio plików motywu – zamiast tego utwórz jego kopię w motywie podrzędnym.

Następnie w pliku szablonu motywu dodaj wywołanie do wpmu_filtrable_query funkcja:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

To po prostu uruchamia funkcję w miejscu w pliku szablonu, w którym ją umieszczasz.

Trzecią opcją jest utworzenie nowego pliku szablonu, takiego jak plik szablonu strony, który uruchomi to zapytanie zamiast domyślnego zapytania. W tym przypadku zrobiłbyś kopię strona.php z motywu lub motywu nadrzędnego i zastąp standardową pętlę wywołaniem funkcji, jak wyżej.

Tak właśnie dodajesz funkcję do motywu. Ale co powiesz na filtrowanie tych argumentów?

Filtrowanie argumentów w Twoim motywie

Ostatnim krokiem jest napisanie funkcji w pliku funkcji motywu, aby filtrować argumenty zapytania. Możesz również dodać drugą funkcję do filtrowania nagłówka, a także dowolne funkcje do korzystania z innych filtrów, które możesz dodać do pętli w swojej wtyczce.

Zauważ, że możesz to zrobić za pomocą wtyczki, jeśli chcesz, ale ponieważ już zakodowałeś funkcję w swoim motywie, myślę, że lepiej jest dodać ten kod do pliku funkcji.

Wyobraźmy sobie, że zarejestrowałeś typ postu o nazwie doohickey i zamiast tego chcesz to wyprowadzić. Ale zamiast wysyłać sześć postów, chcesz pokazać cztery.

W pliku functions potrzebujesz tego kodu:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Zastępuje to zawartość oryginalnego filtra nową zawartością funkcji. Zauważ, że jeśli chcesz zachować którykolwiek z argumentów w oryginalnym filtrze, musisz dodać je do tej funkcji, ponieważ nowy kod zastępuje stary kod i nie dodaje do niego.

Następnie dodajmy funkcję do edycji tekstu nagłówka:

Ładowanie gist 21af1e226cb9c43fb0da0ef6601798ba

Który wyświetli zawartość nowej funkcji zamiast < H3 > nagłówek</h3>, który był wewnątrz filtra.

Możesz zmienić obie te funkcje według własnego uznania.

Filtrowanie WP_Query sprawia, że kod jest bardziej wydajny i oszczędza czas

Jeśli masz zamiar używać WP_Query klasy w wielu witrynach i chcesz zaoszczędzić sobie kłopotu z kodowaniem WP_Query w całości za każdym razem może to zaoszczędzić trochę pracy. W każdej witrynie, z której korzystasz WP_Query, wystarczy dodać wywołanie funkcji i funkcję, aby dołączyć do haka filtra.

Jeśli chcesz, aby wtyczka była jeszcze bardziej elastyczna, możesz użyć pliku include dla pętli zamiast kodowania go bezpośrednio do wtyczki, a następnie dołączyć include_once() wezwij filtr. W ten sposób możesz wywołać inny plik include, jeśli chcesz, i wypisać inną wersję pętli.

Mam nadzieję, że ten poradnik okazał się pomocny! Jeśli masz jakieś pytania dotyczące kodu, daj nam znać w komentarzach poniżej.

Tagi:

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd „nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…

Jak zainstalować WordPress lokalnie na komputerze Mac za pomocą MAMP

W artykule: Jak zainstalować MAMP na komputerze MacInstalacja WordPress na komputerze MacWypróbowanie…