WordPress Custom Post Type kullanarak özel içerik sayfaları nasıl oluşturulur bunu göreceğiz. WordPress denildiğinde insanların ilk aklına gelen bir blog platformu olduğudur fakat bu yanlış bir düşüncedir. WordPress’in bir blog platformundan öte çok iyi bir içerik yönetim sistemi (CMS) olduğunu söylemek yanlış olmayacaktır. WordPress ile birlikte varsayılan olarak birçok yazı biçimi geliyor ancak bunların yanında dilediğiniz kadar özel içerik sayfası da oluşturabilirsiniz. Bu noktada da bir blog platformu olmaktan çıkıp sağlam bir içerik yönetim sistemi hâline dönüşmektedir. Özel içerik sayfaları oluşturmanın iki yolu bulunmaktadır ve bu makalede bunları ele alacağız.
Otomatik Olarak Özel İçerik Sayfası Oluşturmak
Eklenti Kullanarak Özel İçerik Sayfası Oluşturmak
WordPress üzerinde özel içerik sayfası oluşturmanın en kolay yolu bir eklenti kullanmaktadır. Yeni başlayanlar için bu tavsiye edilen en iyi yöntemdir. Yapmanız gereken tek şey Custom Post Type UI eklentisini kurmak ve gerekli alanları doldurarak kendinize bir özel içerik sayfası oluşturmak. Karşılaşacağınız tek zorluk bu eklentinin Türkçe olmaması olacaktır fakat gerekli alanların altındaki örnek terimler sayesinde İngilizce bilmiyor olsanız bile bu zorluğun üstesinden gelebilirsiniz.
Kod Oluşturucu Kullanarak Özel İçerik Sayfası Oluşturmak
Eklenti kullanarak özel içerik sayfası oluşturmaya nazaran biraz daha zahmetli bir işlem fakat işinizi web sitenize eklenti kurmadan halletmek istiyorsanız kullanabileceğiniz pratik yöntemlerden biridir. WordPress Custom Post Type Generator kullanarak kolayca özel içerik sayfası oluşturabilirsiniz. 6 adımda sizden istenen bilgileri gerekli alanlara girdikten sonra size bir kod çıktısı verecektir. Elde ettiğiniz kod çıktısını kullandığınız temanın functions.php isimli dosyası içerisine ekleyerek istediğiniz işlemi gerçekleştirebilirsiniz. Alternatif olarak Generate WordPress Post Type adresini de kullanabilirsiniz.
Manuel Olarak Özel İçerik Sayfası Oluşturmak
Eklenti kullanmak istemiyorsanız ve WordPress Custom Post Type mantığı nedir öğrenmek istiyorsanız manuel olarak özel içerik sayfası oluşturmak bunun en iyi yoludur. Bu işlemi yaparken kullanacağımız tek dosya functions.php dosyasıdır, tüm kodlarımızı bu dosyaya yazacağız. Örneğimizde de bir film sayfası ekliyor olduğumuzu varsayalım ve nasıl çalıştığına bir bakalım:
add_action( 'init', 'create_posttype' );
function create_posttype() {
register_post_type( 'filmler',
array(
'labels' => array(
'name' => __( 'Filmler' ),
'singular_name' => __( 'Film' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'filmler'),
)
);
}
İlk olarak fonksiyonu tanımladık ve bu işlemden sonra yönetim paneline Filmler isminde bir sekme eklenecektir. Bu işlem için gerekli en sade kod yapısı budur ancak daha detaylı kullanım gerekiyorsa aşağıdaki örneği inceleyebilirsiniz.
add_action( 'init', 'custom_post_type', 0 );
function custom_post_type() {
$labels = array(
'name' => _x( 'Filmler', 'Yazı Türü Genel İsmi', 'kodgentr' ),
'singular_name' => _x( 'Film', 'Yazı Türü Tekil İsmi', 'kodgentr' ),
'menu_name' => __( 'Filmler', 'kodgentr' ),
'parent_item_colon' => __( 'Ana Film', 'kodgentr' ),
'all_items' => __( 'Tüm Filmler', 'kodgentr' ),
'view_item' => __( 'Filmi Görüntüle', 'kodgentr' ),
'add_new_item' => __( 'Yeni Film Ekle', 'kodgentr' ),
'add_new' => __( 'Yeni Ekle', 'kodgentr' ),
'edit_item' => __( 'Filmi Düzenle', 'kodgentr' ),
'update_item' => __( 'Filmi Güncelle', 'kodgentr' ),
'search_items' => __( 'Film Ara', 'kodgentr' ),
'not_found' => __( 'Bulunamadı', 'kodgentr' ),
'not_found_in_trash' => __( 'Çöp kutusunda bulunamadı', 'kodgentr' ),
);
$args = array(
'label' => __( 'filmler', 'kodgentr' ),
'description' => __( 'Tüm güncel filmler bir arada', 'kodgentr' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
);
register_post_type( 'filmler', $args );
}
Tüm detayları ile kullanmak isterseniz yukarıdaki örnekten faydalanabilirsiniz.
- labels
Özel içerik sayfası için kullanıcı arayüzü ayarları bu bölümde yapılmaktadır. Bu değerler eklenen yazı türünün isimlendirilmesi ile alakalı değerlerdir.
- description
Özel içerik tipi için kısa bir açıklama metninin girildiği bölüm.
- supports
Düzenleme ekranında WordPress’in hangi özelliklerinin kullanabilir olacağını sorgulayan alandır. Varsayılan olarak sadece başlık alanı ve editör gösterilmektedir. Eğer özet, yorumlar gibi destekler eklemek isterseniz burada belirtmeniz gerekmektedir.
- taxonomies
İçerik için ekstradan kategori ve etiketler gibi özellikler eklemek isterseniz bu bölümde belirtmeniz gerekmektedir.
- hierarchical
Hiyerarşik özel içerik sayfaları normal sayfalar gibidir ana eleman ve alt eleman eklebilir. Hiyerarşik olmayanlar ise blog gönderileri gibidir.
- menu_position
Yönetim paneline eklenecek menünün sıralaması bu bölümde belirtilmektedir. İdeal sıra 5’tir fakat yukarıya ya da aşağıya almak isterseniz bu değeri değiştirebilirsiniz.
- has_archive
True olarak işaretlenmesi durumunda sizin için otomatik olarak bir mesaj tipi arşivi ayarlayacak kurallar oluşturulacaktır. Bu demektir ki aşağıdaki gibi bir arşiv sayfası otomatik oluşturulacaktır:
http://website.com/filmler/
Bu konunun detaylarından “Özel İçerik Sayfalarının Bağlantı Adresleri” başlığında bahsedilmiştir.
Kodları functions.php dosyasına eklediğinizde yukarıda görüldüğü gibi WordPress yönetim panelinize Filmler başlığı altında bir menü eklenecektir. İçeriklerinizi bu menüyü kullanarak ekleyebilirsiniz.
Görüldüğü gibi özel içerik sayfaları için birçok ayar bulunmaktadır. Tüm ayarların detaylarını öğrenmek için WordPress Codex’e göz atabilirsiniz.
Özel İçerik Sayfalarının Yayınlanması
Özel içerik sayfaları oluşturduktan sonra bu içerikler için özel yayın sayfaları hazırlamak için oluşturduğunuz standart şablonu kullanabilirsiniz ancak dikkat etmeniz gereken bir husus bulunmaktadır. Sayfa şablonundaki loop döngüsünü yalnızca belirli bir içerik üzerinden yürütmeniz gerekmektedir. Daha iyi kavramak için aşağıdaki örneğe göz atabilirsiniz:
<?php
// post_type ile içerik tipini belirtiyoruz
// post_per_page ile görüntülenecek içerik sayısını belirtiyoruz
$args = array( 'post_type' => 'filmler', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Üzgünüz, aradığınız içerik bulunamadı.' ); ?></p>
<?php endif; ?>
Tekil yazı sayfalarınızı single-filmler.php şeklinde yine yukarıdaki örneği kullanarak oluşturabilirsiniz.
Özel İçerik Sayfalarının Bağlantı Adresleri
Eğer bağlantı adresleriniz SEO uyumlu olarak yapılandırdıysanız oluşturduğunuz içerik sayfasının adresi şu şekilde gözükecektir:
http://website.com/filmler
Eğer bağlantı adreslerinizde herhangi bir yapılandırma söz konusu değilse içerik sayfasının adresi bu şekilde gözükecektir:
http://website.com/?post_type=filmler
Kaynaklar:
- https://codex.wordpress.org/Post_Types
- http://www.wpbeginner.com/wp-tutorials/how-to-create-custom-post-types-in-wordpress/
- http://www.smashingmagazine.com/2012/11/complete-guide-custom-post-types/