Wyświetlanie niestandardowych typów postów – szablony i zapytania
Opublikowany: 2016-09-26To jest trzeci i ostatni artykuł z naszej serii poświęconej niestandardowym typom postów (CPT). Tematy, które omówiliśmy w pierwszych dwóch to:
- Niestandardowe typy postów (jak je tworzyć)
- Taksonomie niestandardowe
W pierwszym i drugim artykule zarejestrowaliśmy niestandardowy typ postu referencje oraz niestandardową taksonomię testimonial_service . Teraz musimy wyświetlić referencje na naszej stronie. Przyjrzymy się więc, jak stworzyć szablon naszych referencji, jak je przeszukiwać i jak wyświetlać je w dowolnym miejscu na naszej stronie.
Domyślne niestandardowe szablony postów
Stworzyliśmy nasz CPT z parametrem has_archive
ustawionym na true, który wyświetli wszystkie referencje na stronie archiwum .
WordPress używa hierarchii szablonów do wyświetlania różnych rodzajów treści. W przypadku niestandardowego typu postu będzie szukał:
archiwum-{post_type}.php
pojedynczy-{post_type}.php
Jeśli te szablony nie są zdefiniowane w motywie, poszuka szablonów ogólnych:
archiwum.php
pojedynczy.php
Jeśli nawet te szablony nie są zdefiniowane, domyślnie będzie to szablon index.php .
W naszym przypadku motyw Shaka ma single.php , ale nie ma szablonu archive.php . Oznacza to, że domyślnie użyje szablonu single.php dla pojedynczej strony z referencjami. Wykorzysta również szablon index.php do wyświetlenia wszystkich referencji na stronie archiwum referencji.
Referencje będą wyświetlane na stronie archiwum referencji , która będzie znajdować się na tej stronie:
http://twoja-domena-goes-here.com/ ?post_type=testimonials
Jeśli masz włączone ładne permalinki, możesz również uzyskać dostęp do strony za pomocą tego adresu URL:
http://twoja-domena-tutaj.com/ referencje
(Uwaga: jeśli ładne permalinki nie działają dla Ciebie, przejdź do wp-admin -> Ustawienia -> Permalinki i skonfiguruj je tak, jak chcesz i zapisz ustawienia)
Najpierw powinniśmy napisać kilka referencji w nowo zarejestrowanych referencjach CPT , więc mamy trochę danych do wyświetlenia. Dodałem 3 referencje i tak wygląda domyślny układ strony archiwum referencji na naszym motywie Shaka:
Jak widać układ jest w porządku, ale niektóre wyświetlane dane nie są potrzebne, np. „według autora” i data. Również niestandardowa taksonomia testimonial_service nie jest wyświetlana, więc dodamy ją w naszych niestandardowych szablonach.
Tworzenie niestandardowych szablonów dla naszego CPT
Jak wspomniano w poprzedniej sekcji, musimy stworzyć dwa szablony. Archive-testimonials.php i single-testimonials.php . Dla tego przykładu utworzymy tylko szablon archive-testimonials.php .
Powinniśmy utworzyć te pliki w motywie potomnym, ale dla uproszczenia dodam plik archive-testimonials.php bezpośrednio w motywie Shaka. Skopiuję plik index.php, który będzie służył jako punkt wyjścia, i zmienię jego nazwę na archive-testimonials.php .
Usunąłem „według autora”, kod daty i pasek boczny. Dodałem polecane obrazy i niestandardową taksonomię usługi referencji . Użyłem funkcji the_terms
WP, która wyświetla listę określonych terminów WP, w naszym przypadku taksonomii niestandardowej.

Wiem, że estetycznie nie wygląda super, ale nie o to chodzi. Chcieliśmy stworzyć inną strukturę/układ strony archiwum referencji z różnymi danymi, i osiągnęliśmy to w kilka minut.
Moglibyśmy zrobić to samo dla strony z pojedynczymi referencjami. Skopiowalibyśmy plik single.php i zmienilibyśmy jego nazwę na single-testimonials.php i z tego miejsca zmienilibyśmy kod.
Nie pokazałem tutaj żadnego kodu, ponieważ przykłady kodu byłyby inne dla każdego motywu, a do kodowania szablonów potrzebna jest podstawowa znajomość HTML i PHP. Ale zawsze łatwiej jest zmodyfikować istniejący szablon, dlatego jako punkt wyjścia użyliśmy pliku index.php.
Odpytywanie niestandardowych typów postów
Innym sposobem wyświetlania niestandardowych typów postów w witrynie jest użycie klasy WP_Query do pobierania niestandardowych typów postów (przeglądaj je i wyświetlaj).
Załóżmy, że chcesz zbudować widżet wyświetlający wszystkie referencje w karuzeli. Lub, że chcesz wyświetlić powiązane referencje (ta sama taksonomia usług referencji) na jednej stronie referencji. Możesz użyć klasy WP_Query
, aby pobrać odpowiednie referencje.
W naszym przykładzie pobierzemy wszystkie referencje, które znajdują się w niestandardowej taksonomii „nurkowania” usługi referencji i wypiszemy je na liście:
<?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>
Jak widać w powyższym kodzie, najpierw przygotowujemy tablicę ustawień argumentów, która jest później używana przy inicjalizacji WP_Query
. W tej tablicy definiujemy pobieranie:
- „referencje” CPT,
- zdobądź tylko opublikowane referencje,
- uzyskaj tylko referencje, które znajdują się w niestandardowej taksonomii nurkowania `testimonial_service`.
Po new WP_Query
odpowiednie referencje są pobierane i możemy je przeglądać. W pętli po prostu wypisujemy tytuł (którego użyłem jako nazwisko autora) i treść referencji w postaci prostej listy. Ponadto powinniśmy zawsze używać funkcji wp_reset_postdata
, aby przywrócić oryginalną pętlę, gdy używamy pętli WP_Query. Zapewni to, że wszystko będzie działać po zakończeniu naszego niestandardowego zapytania.
To były podstawy niestandardowych typów postów i mam nadzieję, że teraz rozumiesz, jak one działają. Jak w przypadku każdego tematu, zawsze jest więcej szczegółów do omówienia. Radziłbym przejrzeć oficjalną dokumentację WP dla wszystkich funkcji i klas, których użyliśmy w tych przykładach. Daj mi znać w sekcji komentarzy poniżej, jeśli masz jakieś pytania.