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ć:

Favourite things output in a paragraph

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

Następnie funkcja zwrotna, aby ją wypełnić:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

Następnie funkcja zapisywania dowolnych danych, które są do niej wprowadzane:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

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:

Some posts added to the favourite custom post type, shown in the WordPress admin

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

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:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

Więc oto funkcja, aby wyprowadzić zawartość w całości:

Ładowanie gist d86649fa7c6a6845bff9ddc8bfaf7466

Teraz, gdy odwiedzam moją stronę demonstracyjną, widzę tekst na górze strony z losowo generowanymi informacjami o moich ulubionych rzeczach:

Favourite things output in a paragraph

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

More Favourite things output in a paragraph

Łą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.

Czy używałeś niestandardowych pól wraz z niestandardowymi zapytaniami do wyprowadzania danych w unikalny sposób? Daj nam znać swoje pomysły w komentarzach!

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…