Wyświetlanie niestandardowych typów postów – szablony i zapytania

Opublikowany: 2016-09-26

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

referencje-domyślne

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.

referencje-zakończone

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.