Menampilkan Jenis Posting Kustom – Template dan Query

Diterbitkan: 2016-09-26

Ini adalah artikel ke-3 dan terakhir dari seri kami tentang Custom Post Types (CPT). Topik yang kami diskusikan dalam dua yang pertama adalah:

  • Jenis Posting Kustom (cara membuatnya)
  • Taksonomi Kustom

Pada artikel pertama dan kedua, kami mendaftarkan jenis posting kustom testimonial dan taksonomi kustom testimonial_service . Kami sekarang harus menampilkan testimonial di situs kami. Jadi kita akan melihat cara membuat template untuk testimonial kita, cara menanyakannya, dan cara menampilkannya di mana saja di situs kita.

Template Jenis Posting Kustom Default

Kami membuat CPT kami dengan parameter has_archive disetel ke true, yang akan menampilkan semua testimonial di halaman arsip .

WordPress menggunakan hierarki template untuk menampilkan berbagai jenis konten. Untuk jenis posting khusus, itu akan mencari:

arsip-{post_type}.php
tunggal-{post_type}.php

Jika template ini tidak ditentukan dalam tema, maka template akan mencari template umum:

arsip.php
tunggal.php

Jika bahkan template ini tidak ditentukan, maka akan default ke template index.php .

Dalam kasus kami, tema Shaka memiliki single.php , tetapi tidak memiliki template archive.php . Ini berarti secara default akan menggunakan template single.php untuk halaman testimonial tunggal. Ini juga akan menggunakan template index.php untuk menampilkan semua testimonial di halaman arsip testimonial.

Testimonial akan ditampilkan di halaman arsip testimonial , yang akan terletak di halaman ini:

http://domain-anda-goes-here.com/ ?post_type=testimonials

Jika Anda mengaktifkan permalink cantik, Anda juga dapat mengakses halaman dengan URL ini:

http://domain-anda-goes-here.com/ testimonial

(Catatan: jika permalink cantik tidak berfungsi untuk Anda, buka wp-admin -> Pengaturan -> Permalinks dan atur, seperti yang Anda inginkan dan simpan pengaturannya)

Pertama, kita harus menulis beberapa testimonial di Testimonial CPT yang baru terdaftar, jadi kami memiliki beberapa data untuk ditampilkan. Saya telah menambahkan 3 testimonial dan ini adalah bagaimana tata letak default halaman arsip testimonial terlihat pada tema Shaka kami:

testimonial-default

Seperti yang Anda lihat, tata letaknya ok, tetapi beberapa data yang ditampilkan tidak diperlukan, seperti "oleh penulis" dan tanggal. Juga taksonomi khusus testimonial_service tidak ditampilkan, jadi kami akan menambahkannya di templat khusus kami.

Membuat template khusus untuk CPT kami

Seperti yang disebutkan di bagian sebelumnya, kita harus membuat dua template. Archive-testimonials.php dan single-testimonials.php . Kami hanya akan membuat template archive-testimonials.php untuk contoh ini.

Kita harus membuat file-file ini dalam tema anak, tetapi demi kesederhanaan, saya akan menambahkan file archive-testimonials.php langsung di tema Shaka. Saya akan menyalin file index.php, yang akan berfungsi sebagai titik awal, dan mengganti namanya menjadi archive-testimonials.php .

Saya telah menghapus "oleh penulis", kode tanggal, dan bilah sisi. Saya telah menambahkan gambar unggulan dan taksonomi kustom layanan testimonial . Saya telah menggunakan fungsi the_terms WP yang menampilkan daftar istilah WP tertentu, dalam kasus kami taksonomi khusus.

testimonial-selesai

Saya tahu bahwa secara estetika itu tidak terlihat mengagumkan, tapi bukan itu intinya. Kami ingin membuat struktur/tata letak yang berbeda dari halaman arsip testimonial dengan data yang berbeda, dan itu tercapai dalam beberapa menit.

Kami juga dapat melakukan hal yang sama untuk satu halaman testimonial. Kami akan menyalin file single.php dan mengganti namanya menjadi single-testimonials.php dan mengubah kode dari sana.

Saya tidak menunjukkan kode apa pun di sini karena contoh kode akan berbeda untuk setiap tema dan beberapa pengetahuan dasar tentang HTML dan PHP diperlukan untuk membuat kode template. Tapi selalu lebih mudah untuk memodifikasi template yang sudah ada, itu sebabnya kami menggunakan index.php sebagai titik awal kami.

Menanyakan Jenis Posting Kustom

Cara lain untuk menampilkan jenis kiriman khusus di situs Anda adalah dengan menggunakan kelas WP_Query untuk mengambil jenis kiriman khusus (melewati dan menampilkannya).

Katakanlah Anda ingin membuat widget yang menampilkan semua testimonial dalam carousel. Atau, Anda ingin menampilkan testimonial terkait (taksonomi layanan testimonial yang sama) pada satu halaman testimonial. Anda akan menggunakan kelas WP_Query untuk mengambil testimonial yang relevan.

Dalam contoh kami, kami akan mengambil semua testimonial yang ada dalam taksonomi kustom layanan testimonial "menyelam" dan kami akan menampilkannya dalam daftar:

 <?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; ?>

Seperti yang Anda lihat pada kode di atas, pertama-tama kita siapkan array pengaturan argumen, yang kemudian digunakan dalam inisialisasi WP_Query . Dalam array ini, kami mendefinisikan untuk mengambil:

  • `testimonial` CPT,
  • dapatkan hanya testimonial yang dipublikasikan,
  • dapatkan hanya testimonial yang ada di `testimonial_service` taksonomi kustom menyelam.

Saat new WP_Query dipanggil, testimonial yang relevan diambil dan kami dapat mengulanginya. Dalam loop kami hanya menampilkan judul (yang saya gunakan untuk nama penulis) dan isi testimonial dalam daftar sederhana. Juga, kita harus selalu menggunakan fungsi wp_reset_postdata , untuk mereset kembali ke loop asli, ketika kita menggunakan loop WP_Query. Ini akan memastikan bahwa semuanya berfungsi setelah kami selesai dengan kueri khusus kami.

Ini adalah dasar dari Jenis Posting Kustom, dan saya harap Anda sekarang memahami cara kerjanya. Seperti halnya topik apa pun, selalu ada lebih banyak detail untuk dibahas. Saya akan menyarankan Anda untuk membaca dokumentasi WP resmi untuk semua fungsi dan kelas yang kami gunakan dalam contoh ini. Beri tahu saya di bagian komentar di bawah, jika Anda memiliki pertanyaan.