WordPress Özel Yazı Biçimi ve Taxonomy – Custom Post Type ve Taxonomy

Vaktiyle kısaca nasıl özel yazı biçimi eklenir konusuna değindim. Buradan erişebilirsiniz.

Bu yazıda hem özel yazı biçimi (custom post type) hemde taxonomy konularına değineceğim bunların arasındaki ilişkisel yapıyı biraz anlatacağım.

Bir yazı biçimi eklemek için temanızdaki functions.php dosyanızda aşağıdaki tanımlamayı yapmanız gerekmektedir. (Site olarak bir müzik sitesi yaptığımı düşünün. Örnek buna yakındır. Bağlantı kurabilirsiniz.)

add_action( 'init', 'yazi_bicimi_sanatci' );
function yazi_bicimi_sanatci() {
	register_post_type( 'sanatci',
		array(
			'labels' => array(
				'name' => __( 'Sanatçılar' ),
				'singular_name' => __( 'Sanatçı' )
			),
		'public' => true,
		'has_archive' => true,
		'publicly_queryable' => true,
		'show_ui' => true, 
		'query_var' => true,
		'rewrite' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'menu_position' => 5,
		'supports' => array('title','editor','author','thumbnail','excerpt','comments','custom-fields'), 
		// destekleyeceği özellikler

		'has_archive' => 'sanatci'
		)
	);
}

Şimdi bu kod ile birlikte panelinizde Sanatçılar diye bir bölüm çıkacaktır. Elbette bir sanatçının şarkıları da olur o yazı tibini de ekleyelim.

add_action( 'init', 'yazi_bicimi_sarkilar' );
function yazi_bicimi_sarkilar() {
	register_post_type( 'sarkilar',
		array(
			'labels' => array(
				'name' => __( 'Şarkılar' ),
				'singular_name' => __( 'Şarkı' )
			),
		'public' => true,
		'has_archive' => true,
		'publicly_queryable' => true,
		'show_ui' => true, 
		'query_var' => true,
		'rewrite' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'menu_position' => 5,
		'supports' => array('title','editor','author','thumbnail','excerpt','comments','custom-fields'),
		'has_archive' => 'sarkilar'
		)
	);
}

Bununla birlikte panelinizde Şarkılar diye bir bölüm daha görünecektir.

Diyeceksiniz ki hangi şarkının hangi sanatçıya ait olduğunu nasıl bileceğiz.

Bunun için taxonomy kullanabilir. İlişki kurmak istediğiniz özel yazıların hepsine taxonomy ekleyeceğiz.

Aşağıdaki kod yapısını yine functions.php ye eklediğinizde panelinizde çıkan yazı tiplerine ‘Sanatçı Adı’ diye etiket ekleyecektir.
Kodu incelerseniz Sanatçı ve Şarkılar yazı tiplerine nasıl bağlandığını anlarsınız.

function sanatci_init() {
	// create a new taxonomy
	register_taxonomy(
		'sanatci',
		array('sanatci','sarkilar'), // Bağlanacak özel yazı tiplerinin isimleri
		array(
			'label' => __( 'Sanatçı Adı' ),
			'rewrite' => array( 'slug' => 'sanatci' )
		)
	);
}
add_action( 'init', 'sanatci_init' );

İçerik gösterimleri için temanızda özel dosyalar oluşturmanız gerekir.

Eklenen tüm yazıları göstermek için archive-yazitipi.php dosyanızın olması gerekir.
Tekil gösterimler için single-yazitipi.php dosyalarınızın olması gerekir. Bu her yazı tipi için uygulanması gerekir.

İçeriklerinizi anasayfa veya iç sayfalarda ilişkisel çekmek için wordpress in loop- döngü yapısını kullanabilirsiniz.

 'videolar', // yazi tipi
	'sanatci'    => 'asik-veysel' // taxonomy adı
);
query_posts( $args );
if (have_posts()) :  while (have_posts()) : the_post(); 
?>








Bu query_posts sayesinde de temanızın-sitenizin heryerinde istediğiniz sanatçının istediğiniz şarkısını çekebilirsiniz.

Not: Bir custom post – özel yazı biçimi eklendiğinde eğer permalink ayarınız önceden yapılmışsa archive-yazicibimi.php veya single-yazibicimi.php olmasına rağmen eklenen içeriği göremeyebilirsiniz. Panelde ‘Kalıcı Kağlantılar-Permalink’ değişiklik yapmanda güncellemeniz yeterlidir.

“WordPress Özel Yazı Biçimi ve Taxonomy – Custom Post Type ve Taxonomy” için 18 yorum

  1. MErhabalar,

    Mesela taxanomy olarak sanatcı album yabancı 5mb altı tarzı etiketler ekledik ve bunlardan 3 ünü kapsayan arama yapmak istiyoruz. Mesela sanatcıyı seçecez yabancı olduğunu seçecez aratma yapacaz bu mümkünmü nasıl yapabiliriz yada eklentı varmı ?

    1. Bunu kodla yapmanız gekerecektir. Önceki yaptığım projelerde öğrendiğim kadarıyla halen taxonomy aramaları konusunda wp varsayılan arama özelliği yetmiyor. Query_post yapıları ile özelleştirilmiş arma sonuçları göstermeniz mümkün biraz uğraştırır fakat mümkün. Taxonomy Filtrelemeyle ilgili ingilizce örnekler araştır. Benzer çözümler bulursun.

  2. Merhabalar,
    Ben “Oyuncular” adında bir özel sayfa şablonu oluşturarak film oyuncuları için bir sayfa yapıp, film eklediğim yazının içerisinden taxonomy kullanarak oyuncu ismine tıkladığımda bu oyuncunun sayfasına gitmesini bu özellikler ile sağlayabilir miyim acaba?
    Yardımcı olursanız minnettar kalırım.

  3. Custom post types’ı anladık da şu Taxonomy olayını bir türlü anlayamadım. Bu özel yazı biçimleri ve sınıflandırma sisteminin biraz daha kolaylaşması gerek sanırım.

  4. Merhaba.

    Olusturulan yazı biçimleri için kategori mantıgı nasıl olusturuluyor? Yani Sanatcı ekledim bu sanatcının muzisyen, ressam, oyuncu,…. gibi kategorilerde filtrelemek nasıl yapılır?

  5. oluşturdugumuz taxonomyleri farklı sayfada nasıl cekeriz mesela ben sanatcı diye bir taxonomy oluşturdum onu sanatcı sayfasında nasıl cekerim ?

  6. verdiginiz sayfaya baktım kodlarla ugraştım ama bir türlü olmadı benim oluşturdugum taxonomyleri yine category sayfasında açıyor

  7. yazdıgınız kitapta bu konu ayrıntılı varsa kitabı alark içelemek istiyorum bu şekil pek bişe anlamak çok zor oluyor

  8. Merhaba Sinan Hocam;Bir konuda senden yardım talep ediyorum.
    Örnek olarak ben bir film sitesi açtım taxonomy özelliği ile oyuncuları ekledim.Yalnız benim istediğim tek bir sayfada tüm oyuncuları listelemek istiyorum.bunu nasıl yapabilirim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir