Özel Gönderi Türlerini Görüntüleme – Şablonlar ve Sorgulama

Yayınlanan: 2016-09-26

Bu, Özel Gönderi Türleri (CPT) serimizin 3. ve son makalesidir. İlk ikisinde tartıştığımız konular şunlardı:

  • Özel Gönderi Türleri (nasıl oluşturulur)
  • Özel Taksonomiler

Birinci ve ikinci makalelerde, referanslar özel yazı tipini ve referans_hizmeti özel taksonomisini kaydettik. Artık referansları sitemizde göstermemiz gerekiyor. Bu yüzden referanslarımız için nasıl şablon oluşturulacağına, nasıl sorgulanacağına ve sitemizde herhangi bir yerde nasıl görüntüleneceğine bir göz atacağız.

Varsayılan Özel Gönderi Türü Şablonları

Tüm referansları bir arşiv sayfasında gösterecek olan has_archive parametresini true olarak ayarlayarak has_archive oluşturduk.

WordPress, farklı içerik türlerini görüntülemek için bir şablon hiyerarşisi kullanır. Özel gönderi türü için şunları arayacaktır:

arşiv-{post_type}.php
tek-{post_type}.php

Bu şablonlar temada tanımlı değilse, genel şablonları arayacaktır:

arşiv.php
tek.php

Bu şablonlar bile tanımlanmamışsa, varsayılan olarak index.php şablonuna geçecektir.

Bizim durumumuzda Shaka teması single.php'ye sahiptir, ancak arşiv.php şablonuna sahip değildir. Bu, varsayılan olarak tek referans sayfası için single.php şablonunu kullanacağı anlamına gelir. Ayrıca, referanslar arşiv sayfasındaki tüm referansları görüntülemek için index.php şablonunu kullanacaktır.

Referanslar, bu sayfada yer alacak olan referanslar arşiv sayfasında gösterilecektir:

http://alan-adiniz-goes-here.com/ ?post_type=testimonials

Güzel kalıcı bağlantıları etkinleştirdiyseniz, sayfaya şu URL ile de erişebilirsiniz:

http://alan-adiniz-goes-here.com/ referanslar

(Not: Güzel kalıcı bağlantılar sizin için çalışmıyorsa, wp-admin -> Ayarlar -> Kalıcı Bağlantılar'a gidin ve bunları istediğiniz şekilde ayarlayın ve ayarları kaydedin)

İlk olarak, yeni kaydedilen CPT Görüşlerine bazı referanslar yazmalıyız, bu yüzden görüntülenecek bazı verilerimiz var. 3 referans ekledim ve Shaka temamızda referanslar arşiv sayfasının varsayılan düzeni şu şekilde görünüyor:

referanslar-varsayılan

Gördüğünüz gibi düzen tamam, ancak "yazar tarafından" ve tarih gibi görüntülenen verilerin bir kısmına gerek yok. Ayrıca testimonial_service özel sınıflandırması görüntülenmez, bu yüzden bunu özel şablonlarımıza ekleyeceğiz.

CPT'miz için özel şablonlar oluşturma

Önceki bölümde bahsedildiği gibi, iki şablon oluşturmamız gerekiyor. Archive-testimonials.php ve single-testimonials.php . Bu örnek için sadece arşiv-testimonials.php şablonunu oluşturacağız.

Bu dosyaları bir alt temada oluşturmalıyız, ancak basitlik adına, Archive-testimonials.php dosyasını doğrudan Shaka temasına ekleyeceğim. Başlangıç ​​noktası olarak hizmet edecek olan index.php dosyasını kopyalayacağım ve onuarchive -testimonials.php olarak yeniden adlandıracağım.

"Yazara göre", tarih kodunu ve kenar çubuğunu kaldırdım. Öne çıkan görselleri ve referans hizmeti özel taksonomisini ekledim. Bizim durumumuzda özel sınıflandırma olan belirli WP terimlerinin bir listesini görüntüleyen the_terms WP işlevini kullandım.

referanslar-bitmiş

Estetik olarak harika görünmediğini biliyorum, ama mesele bu değil. Farklı verilerle referans arşiv sayfasının farklı bir yapısını/düzenini oluşturmak istedik ve bunu birkaç dakika içinde başardık.

Aynı şeyi tekil referanslar sayfası için de yapabiliriz. Single.php dosyasını kopyalar ve onu single-testimonials.php olarak yeniden adlandırır ve kodu oradan değiştirirdik.

Kod örnekleri her tema için farklı olacağından ve şablonları kodlamak için bazı temel HTML ve PHP bilgisi gerektiğinden burada herhangi bir kod göstermedim. Ancak mevcut bir şablonu değiştirmek her zaman daha kolaydır, bu yüzden başlangıç ​​noktamız olarak index.php'yi kullandık.

Özel Gönderi Türlerini Sorgulama

Sitenizde özel gönderi türlerini görüntülemenin başka bir yolu, özel gönderi türlerini getirmek için WP_Query sınıfını kullanmaktır (döngü yapın ve bunları görüntüleyin).

Tüm referansları bir karuselde görüntüleyen bir pencere öğesi oluşturmak istediğinizi varsayalım. Veya ilgili referansları (aynı referans hizmeti sınıflandırması) tek referans sayfasında görüntülemek istediğinizi. İlgili referansları almak için WP_Query sınıfını kullanırsınız.

Örneğimizde, "dalış" referans hizmeti özel sınıflandırmasındaki tüm referansları alacağız ve bunları bir liste halinde çıkaracağız:

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

Yukarıdaki kodda görebileceğiniz gibi, önce daha sonra WP_Query başlatmada kullanılacak olan argüman ayarları dizisini hazırlıyoruz. Bu dizide şunu almayı tanımlıyoruz:

  • "referanslar" CPT,
  • yalnızca yayınlanan referansları alın,
  • yalnızca dalış özel sınıflandırması 'testimonial_service' içindeki referansları alın.

new WP_Query çağrıldığında, ilgili referanslar alınır ve bunlar arasında dolaşabiliriz. Döngüde sadece başlığı (yazar adı için kullandım) ve referansın içeriğini basit bir liste halinde çıkarıyoruz. Ayrıca, bir WP_Query döngüsü kullandığımızda, orijinal döngüye geri dönmek için her zaman wp_reset_postdata işlevini kullanmalıyız. Bu, özel sorgumuzu bitirdikten sonra her şeyin çalışmasını sağlayacaktır.

Bunlar, Özel Gönderi Türlerinin temelleri olmuştur ve umarım şimdi nasıl çalıştıklarını anlamışsınızdır. Herhangi bir konuda olduğu gibi, her zaman girilecek daha fazla ayrıntı vardır. Bu örneklerde kullandığımız tüm işlevler ve sınıflar için resmi WP belgelerini incelemenizi tavsiye ederim. Herhangi bir sorunuz varsa, aşağıdaki yorum bölümünde bana bildirin.