WordPress Özel İçerik Sayfası Oluşturmak

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

Custom Post Type UI

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

 

Custom Post Type Generator

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.

Özel İçerik Sayfaları

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:

16.10.2015 Wordpress 9 yorum

, , , , ,

9 yorum

muharrem17.04.2016

Hocam şimdi ben WordPresste oluşturduğum bir sayfa (haberler) nın alt sayfası olarak yeni bir sayfa oluşturabiliyorum. Örnek siteadi.com/haberler/yeni-haberler/
bu sayfa yapısını sayfa altına sayfa oluşturarak yapıyorum.
Ama benim istediğim Bir sayfanın altına oluşturduğum sayfanın altına sayfa olarak değil yazı olarak bir konu girmek istiyorum.
yani siteadi.com/haberler/yeni-haberler/ bu sayfa yapısındaki (siteadi.com/haberler/ ) bunu sayfa olarak, ( /yeni-haberler/ ) bu kısmını ise yazı olarak eklediğimde bu sayfa yapısını oluşturmak istiyorum.
bunu nasıl yapabilirim ?

Harun Korkmaz22.04.2016

Merhaba Muharrem,
Yazının içeriğinde zaten öğrenmek istediğin konunun nasıl yapıldığını detaylı bir şekilde açıkladım, daha nasıl açıklayabilirim bilmiyorum. Yazıyı tekrar okursan sorularının cevaplarını bulabileceğine eminim.

evden eve17.07.2016

anladım hocam teşekkür ederim yazıyı dikkatli okumadan geçmişim ondan olmuş

ferit07.08.2016

merhaba,
hangi functions dosyasına yazıcaz

Harun Korkmaz07.08.2016

Merhaba Ferit,
Wordpress Yönetim Paneli üzerinde Görünüm sekmesinin altında Düzenleyici seçeneği bulunmakta. Buraya girdikten sonra sağdan Tema İşlevleri (functions.php) seçeneğine tıklayarak buraya ekleyebilirsin.

Alperen09.04.2017

Benim çözemediğim konu özel içerik türlerini statik sayfada ya da anasayfada göstermek. Özel içerik türlerini functions.php ye eklediğim bir kod sayesinde genel kategorilere ekledim ama anasayfada göstermeyi başaramıyorum. Custom post type ui functions.php için otomatik kod oluşturuyor. Bu kodu eklediğim zaman içerikler anasayfada, kategorilerde, benzer içeriklerde ve hatta mega menülerde dahi görünmekte ama özel içeriğe tıkladığım zaman arşiv sayfasını gösteriyor. Yani o kod içeriklerimin ziyaret edilmesini engelliyor. Halbuki özel içerik türleri için tek tek şablonlar oluşturdum. Neden o şablonları değil de arşiv şablonuna yönlendirme yapıyor ? Bir türlü çözemedim.

Harun Korkmaz12.04.2017

Merhaba Alperen,
Kalıcı bağlantı ayarlarını kontrol edebilirsin ya da yazıda bahsedilen diğer iki yöntemi kullanabilirsin.

Berk28.08.2017

Selamlar hocam, içerik ekleme sayfamı oluşturdum sorunsuz ve içeriklerin listelenmesi için özel sayfası olan single-isim.php yi de oluşturdum ve single sayfasına içerik listeme kodunuzu yazdığımda hata alıyorum hata mesajı şöyle:

Parse error: syntax error, unexpected ‘else’ (T_ELSE) in C:\xampp\htdocs\wp-content\themes\omegapars\single-bildirim.php on line 13

sorun nedir? Sadece sizin ‘filmler’ yazan yerinizi ben oluşturduğum sayfaya göre değiştim o kadar..

Harun Korkmaz16.09.2017

Merhaba Berk,
13’üncü satıra bir göz atmalısın fazladan bir else kullanımı mevcut olabilir. Kod bütünlüğünü tekrar bir gözden geçirmeni tavsiye ederim.

Yorum Yazın

kod.gen.tr