Farklı Kategoriler için Farklı single.php

Evet tam da bu ipucunun başlığında yazan şeyi anlatacağım bugün. Dün geceyi sabaha bağlarken Hakan’ın Vectorss ü üzerinde çalışırken farkettiğim if ve else kullanımının nelere kadir olduğunu anlatan bir ipucu. Aslı astarı benim kafamdan çıkan ama kodlarda WordPress Codex alanından da yardım aldığım bir kod bütünlüğü. Neden Codex’ten yardım aldım? Çünkü WordPress yapısına aykırı olur mu diye sormak için. Nitekim yaptığım aramalar sonucu bunun gibi bir durumun WordPress’in kendi içinde tınmayacağı birşey olduğunu görünce hemen yola koyuldum, belkide bugüne kadarki en iyi ve temiz kodumu yazdım :D

Geçelim kodlara…

Durum: Bazı kategorilerinizde reklam göstermek ama bazılarında reklam göstermemek istiyorsunuz. Yada buna benzer bir durum var ama tek bir single.php içinde bu zor. Yani farklı kaegoride farklı sayfalar kullanmak istiyorsunuz. Bunun için eklentiler var ama belki benim yaptığım şey aslında daha basit gelecektir.

Hazırlığa Başlayalım…

WordPress içerisindeki single.php yani yazıların iç sayfası olarak bilinen alanı editleyeceğiz. Lütfen WordPress kod yapısını tam kavrayamamış yada hiç bilmeyen arkadaşlar bu kodları uygulamaya çalışmasınlar. Bir bilenden destek alınız. Ve bu kodlar Kendi hostunuzda barındırdığınız WordPress siteniz için geçerli olacaktır.

Öncelikle single.php dosyanızın bir kopyasını bilgisayarınıza oluşturun çünkü sitenizdeki single.php dosyası içinde ana değişikliği yapacağız ve iki farklı single-xx.php dosyamızı onun üstünden çağıracağız. Şimdi yedeklerinizi alığınıza göre kodlara geçelim.

Kodlar…

<?php
$post = $wp_query->post;
if ( in_category('3') ) {
 include(TEMPLATEPATH . '/single-blog.php'); }
 else { include(TEMPLATEPATH . '/single-default.php');
}
?>

Bu asıl kodda iki farklı dosyada yazılarımızı göstermeyi görüyoruz. If ve Else kullanımının bize faydalarını anlatmaya başlıyorum. Burada öncelikle gene wp_query nin güzel bir kullanımını görüyoruz. Yazıyı çağırıyoruz üst alada ve if alanında ise kategori 3 içinde bulunan (dikkat edin kategoriyi sayısal bir değer olarak verdim) yazılar single.php ile açılmaya çalışılırsa yani devamını oku gibi bir durum ortadaysa tema alanında bulunan single-blog.php dosyası içinde aç, eğer değilse else ile single-default.php alanında aç (single-default.php single.php kopyasıdır) demiş olduk. Bunu farklı kategoriler için de kullanabiliriz ancak önce mantığı anlatmak istiyorum.

Bu gördüğünüz kodu single.php dosyasının içindeki tüm bilgiyi sıfırlayarak yerleştiriyoruz. single.php dosyası bu kodun içine aktarılmasından sonra yönlendirme dosyası oluyor. Burada önceden kopyasını aldığımız single.php için bir kopya daha (kaç kategori için değişiklik düşünüyorsanız o kadar kopya alın) oluşturup adını single-blog.php yapın. (Örnekte blog alanını yapmıştık o kaldı) sonra elinizdeki orjinal dosyayı da single-default.php yapın ve single-blog.php dosyasını istediğiniz şekilde düzenleyip bu iki dosyasyı hostunuza atın.

Burada unutmamanız gereken şey kategori numarası. Bu numaraya kategoriler alanında kategori isminin üzerine gelerek durum çubuğunda çıkan id=xxx alanından alabilirsiniz.

Buraya kadar anlatabildiğimi düşünüyorum ama anlamadığınız yer varsa yorum bırakarak cevap isteyebilirsiniz.

Şimdi birden fazla kategori için farklı farklı sayfalar açmak istiyorsanız aşağıdaki kodu ve yukarıda anlattıklarımı her dosyaya uyguayarak devam edeceksiniz.

İşte o Kod..

<?php
$post = $wp_query->post;
if ( in_category('3') ) {
include(TEMPLATEPATH . '/single-blog.php'); }
elseif ( in_category('15') ) {
include(TEMPLATEPATH . '/single-foto.php'); }
elseif ( in_category('18') ) {
include(TEMPLATEPATH . '/single-video.php'); }
else { include(TEMPLATEPATH . '/single-default.php');
}
?>

Burada da farklı kategoriler için farklı dosyalar kullanabilme yetisine sahip olduk.

Bu yazı biterken biten şarkı : Linkin Park – Headstrong

Selametle

Serkan Algur: WordPress ile uğraşan deli bir adam...

This website uses cookies.