W artykule:
Pola niestandardowe są często niedostatecznie używanym aspektem WordPress. Ale z odrobiną wyobraźni i niestandardowym kodem, możesz robić z nimi różne zabawne rzeczy.
W tym poście pokażę Ci, jak połączyć niestandardowe pola (lub metadane postu, jeśli jesteś szczególny) z WP_Query
Klasa do wyświetlania listy ulubionych rzeczy na stronie internetowej z niektórymi informacjami o nich. Lista będzie losowa i będzie czymś więcej niż tylko domyślną listą, którą otrzymasz, jeśli użyjesz get_post_meta()
funkcja.
Oto jak to będzie wyglądać:

Czego potrzebujesz
Aby śledzić wraz z tym postem, musisz następujące:
- Instalacja testowa lub rozwojowa WordPressa
- Edytor kodu
- Trochę wiedzy na temat rejestrowania typów postów, pracy z niestandardowymi polami i korzystania z
WP_Query
.
Ten post jest dość zaawansowany, więc jeśli w którymś momencie utkniesz, możesz zatrzymać się i spędzić trochę czasu na naszych kursach Akademii w tworzeniu WordPressa. Mój kurs średniozaawansowany daje Ci podstawy w całym kodzie, którego będę używał w tym poście.
Uwaga: kod dołączony do tego samouczka jest dostępny na GitHub.
Więc do roboty!
Co będziemy robić
Aby wygenerować informacje na temat naszych ulubionych rzeczy, będziemy robić kilka rzeczy:
- Rejestrowanie niestandardowego typu postu o nazwie „ulubione”
- Tworzenie pola meta dla ekranu edycji postu dla naszego nowego typu postu
- Dodawanie kilku pól do tego metaboxa
- Dodając kilka ulubionych rzeczy i wypełniając nasze pola metabox dla każdego z nich
- Uruchamianie niestandardowego zapytania w celu pobrania danych o naszych ulubionych rzeczach
- Przechowywanie tego, co daje nam zapytanie w tablicy zmiennych
- Wysyłanie go jako tekstu na stronie
To dość dużo do omówienia i nie będę wdawać się w wiele szczegółów dla każdej sekcji. Ale będę dostarczał linki do postów i samouczków, w których możesz dowiedzieć się więcej o technikach i funkcjach, których używam w miarę postępów.
Zacznijmy od niestandardowego typu postu.
Rejestracja Naszego Niestandardowego Typu Post
Najpierw musisz utworzyć nową wtyczkę-zakładam, że wiesz, jak to zrobić, ale jeśli nie jesteś pewien, sprawdź nasz przewodnik pisania wtyczek.
Teraz w wtyczce Dodaj kod, aby zarejestrować niestandardowy typ postu:
Należy zauważyć, że "podpory"
parametr nie zawiera kilku rzeczy, które normalnie byś zrobił dla nowego typu postu, takich jak "redaktor"
oraz "custom-fields"
. To celowe: nie chcę dodawać normalnej treści do tego typu postów i nie chcę dostępu do interfejsu pól niestandardowych, ponieważ będziemy dodawać do tego metabox.
Dodajmy teraz metabox.
Dodawanie Metaboxu na naszym ekranie edycji postów
Teraz, nadal w pluginie, musisz dodać metabox dla użytkowników, aby wprowadzić informacje o tej konkretnej ulubionej rzeczy. Będziemy obejmować dwa pola: co jest w tym dobre, a co nie jest takie dobre.
Po pierwsze, potrzebujesz kodu, aby utworzyć metabox:
Następnie funkcja zwrotna, aby ją wypełnić:
Następnie funkcja zapisywania dowolnych danych, które są do niej wprowadzane:
Jest tam dużo kodu, ale żaden z nich nie różni się znacznie od tego, którego użyłbyś podczas tworzenia dowolnego pola meta. Jeśli potrzebujesz podstawy w tworzeniu meta boxów, sprawdź nasz kurs Intermediate WordPress Development academy i nasz post na ten temat.
Teraz, jeśli otworzę ekran edycji dla mojego niestandardowego typu postu, zobaczę pole meta, ale nie ma pola edycji zawartości, ponieważ nie uwzględniłem tego podczas rejestracji typu postu:

Następną rzeczą do zrobienia jest dodanie ulubionych rzeczy z najlepszymi i najgorszymi rzeczami na ich temat. Dodałem kilka moich ulubionych rzeczy do mojej strony:

Tworzenie zapytania
Teraz zabawna część. Musimy uruchomić zapytanie, aby pobrać trzy losowe ulubione rzeczy z bazy danych. WordPress sprawia, że proste, dając nam możliwość korzystania z orderby
argument dla naszego zapytania o wartości rand
.
Oto kod do definiowania argumentów i konfigurowania zapytania, a także uruchamiania pętli:
Teraz zamiast uruchamiać standardową pętlę i wyprowadzać dane dla każdego posta naraz, zapiszemy odpowiednie dane do tablicy zmiennych. Wiąże się to z trzema rzeczami:
- Tworzenie zmiennej o nazwie
$currentpost
, która zaczyna się od wartości 0, ale potem wzrasta o jeden po każdej pętli, używając$currentpost++
. - Dodawanie tytułu każdego postu do naszej tablicy, za pomocą
$favorite[$currentpost] = get_the_title();
- Dodanie każdego z dwóch niestandardowych pól do naszej tablicy, za pomocą
get_post_meta()
.
Oto kod:
Teraz mamy wypełnioną tablicę zmiennych, możemy wyprowadzić jakieś dane. Zauważ, że zamknęliśmy już pętlę i zresetowaliśmy zapytanie: nie musimy być w pętli, aby wypisać te dane, ponieważ już je zapisaliśmy w naszej tablicy.
To wszystko trafi do środka. sekcja
element, powtarzając jakiś tekst wraz z wartościami z każdego z naszych trzech postów:
Ostatnim krokiem jest uruchomienie funkcji w naszym temacie. Możesz to zrobić, dodając wpmu_output_favorite()
funkcja do pliku szablonu motywu w motywie lub poprzez podłączenie go do Hooka akcji, jeśli motyw ma taki. Używam motywu free Blog Way w mojej witrynie demonstracyjnej, więc zamierzam podłączyć moją funkcję do blog_way_before_primary
hook, który zapewnia dodawanie treści u góry strony:
Zamierzam również umieścić mój kod wewnątrz tagu warunkowego (wewnątrz funkcji), aby upewnić się, że jest on wyświetlany tylko na stronie głównej mojej witryny:
Więc oto funkcja, aby wyprowadzić zawartość w całości:
Teraz, gdy odwiedzam moją stronę demonstracyjną, widzę tekst na górze strony z losowo generowanymi informacjami o moich ulubionych rzeczach:

Jeśli odświeżę stronę, zmieni się:

Łączenie niestandardowych pól i niestandardowych zapytań może być potężne
Jak widać w tym przykładzie, użycie pól niestandardowych wraz z zapytaniem niestandardowym zapewnia dużą elastyczność. W tym przypadku użyłem go do wygenerowania akapitu z informacjami o moich ulubionych rzeczach, które odświeżają się losowo, gdy odświeżam stronę.
Możesz zastosować tę technikę do innych zastosowań pól niestandardowych, umożliwiając wyświetlanie metadanych postów w dowolny sposób. A jeśli zmienisz argumenty dla zapytania, możesz zmienić go z losowej listy na bardziej ukierunkowaną. Możesz nawet użyć meta_query
jako jeden z argumentów zapytania do zapytania o posty o określonej wartości w polu niestandardowym.
Tagi: