Farklı Kategoriler için Farklı single.php

· 13 Temmuz 2009 · WordPress · Ekler: 0 · 16 Yorum
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…

[notice type=attention]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.[/notice]

Ö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


Benzer Yazılar



16 Yorum : “Farklı Kategoriler için Farklı single.php”

  1. alesta diyor ki:

    hocam sagolun , anlattığınız şekilde yaptım ve sorunsuz çalışıyor…çok tşkler gerçekten son zamanlarda okuduğum en güzel paylaşım buydu..fakat ben
    if ( in_category(’3′) ) { bunun yerine if ( in_category(’3,123,45,64,54′) ) { şeklinde yapınca olmadı,acaba bu kodun kullanımı nasıl olmalı bir türlü beceremedim…çünkü ben sitemde hem video hem de normal yazı yayınlıyorum ve şu anda video kategorilerini sıralamak için sizin anlattığınız şekilde tek tek girince kod kalabalığı oluyo..bu sıralama yaparken kodu ne şekilde kullanmam lazım?
    if ( in_category(’3,123,45,64,54′) ) { bu kullanım dogru mudur,dogruysa hata verıyo,degılse eger,dogrusunu soylersenız cok makbule gecer hocam,tekrardan tşk ederım

    • Serkan Algur diyor ki:

      alesta, siteni kontrol ettim. yazılarının (videolarının) tümünü sinema kategorisi altına eklersen tek bir kod işini görürü. If döngüsü içerisinde o şekilde sıralama konusunda sıkıntı oluyor onu ben de farkettim. Şu an işlerimden dolayı pek yeni kod geliştiremiyorum. Dediğim gibi bütün videolarını dahil oldukları en üst kategoriye (sinema) eklersen hem if döngüsünde 1 adet döngü kullanmış olursun hem de senin için kalabalık kod olmaz. Bence bunu yap

  2. alesta diyor ki:

    Hocam şimdi dediğinizi deniyorum,umarım bu şekilde olur,zaten wordpress kasmasın diye elimden geldiğince sadeleştirmeye çalışıyorum,sonucu buraya yazarım denedikten sonra..bu arada ilginiz alakanız için de ayrıca teşekkürler..

  3. alesta diyor ki:

    Hocam denedim,malesef olmuyo…Şimdi ben bu yöntemle sitede görmüşsünüzdür zaten video öncesi reklam olsun ,fakat yazılarda reklam görünmesin diye düşünüyordum,fakat ana kategori seçince if komutu çalışmıyo,kod kalabılıgı da olsa sonucta çalısıyo ya buna da şükür,yardımlarınızdan dolayı cok teşekkürler ve eğer pagerank kaygınız yoksa linkinizi siteme ekliyorum…tekrar görüşmez üzere..saglıcakla

    • Serkan Algur diyor ki:

      if komutu içinde ana kategorini belirtirsen çalışma ihtimali var ama denemişsin zaten onu. single php dosyalarında reklamları gösteriyorsan, çalışıyorsa sorun olmaz :) Link? ekle sorun olmaz :) ben teşekkür ederim

  4. alesta diyor ki:

    link derken,bağlantılara ekledim sol menüde:D esenlikler diliyorum

  5. Cins Biri diyor ki:

    :) Kardeşim Allah razı olsun ya, bu sayfayı daha önceden yer imlerine eklemişim ordan denk geldim. Tam da ihtiyacım olan anda. Çok çok işime yaradı kod gerçekten süpersin ya. Çok teşekkür ediyorumsana.

    Hiç anlamıyorum .php'den ama böyle anlatımları okuya okuya koca site yaptım :D.

© 2012 KaiseRCrazY.CoM, Serkan Algur. İçeriğimi paylaşıyorsan ya da yayınlayacaksan en azından link ver.
Truva Bilgi İşlem ~ 0216 336 06 18
Yukarı