Özel Gönderi Türlerini Görüntüleme – Şablonlar ve Sorgulama
Yayınlanan: 2016-09-26Bu, Ö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:
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.

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.