09 Ağustos 2009

Belirli Bir Kategorinin Yazılarını Gizleme

WordPress Yorum Ekle

WordPress'te bazı site sahipleri belirli kategorilerdeki yazılarının ana sayfada görünmesini istemeyebiliyor. Bunu sağlamak için çeşitli eklentiler kullanılabildiği gibi temaya müdahale ederek de bu işlem yapılabilmekteler. Bu yazımda yeni öğrendiğim bir yöntemi paylaşacağım.
Her zamanki gibi sunduğum yöntem işi en pratik şekilde halletmeye yönelik. Diyelim ki ana sayfada ID'si 3 olan kategoriyi görüntülemek istemiyorsunuz. Bu durumda aşağıdaki kodu temanızın Tema fonksiyonları (functions.php) dosyasına eklemeniz yeterli.

  1. <?php
  2.  function excludeCategory($query)  
  3. {  
  4.     if($query->is_home)  
  5.     $query->set('cat','-3');  
  6.     return $query;  
  7. }  
  8. add_filter('pre_get_posts', 'excludeCategory');  
  9. ?>

Uyarı: Bu kodları eklediğinizde artık ID'si 3 olan kategoriye ait hiçbir yazı ana sayfada görüntülenmeyecek. Ayrıca bir yazı ID'si 3 ve 10 olan iki kategoriye aitse o yazı da görüntülenmeyecektir.
Eğer birden fazla kategorideki yazıları gizlemek isterseniz, bu durumda set('cat', '-3, -10, - 21') şeklinde yazabilirsiniz.
Eğer hem ana sayfada hem de beslemelerde görünmesin istiyorsanız. Kodu aşağıdaki gibi değiştirebilirsiniz.

  1. <?php
  2.  function excludeCategory($query)  
  3. {  
  4.     if($query->is_home || $query->is_feed)  
  5.     $query->set('cat','-3');  
  6.     return $query;  
  7. }  
  8. add_filter('pre_get_posts', 'excludeCategory');  
  9. ?>

Kodda kullanılan 'pre_get_posts' filtresini kullanarak, koşul etiketleri (is_category, is_archive vs.) kullanılarak çeşitli yerlerde yazılarla ilgili istediğiniz gizlemeyi ya da işlemi yapabilirsiniz.
Kaynak


Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=973.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“Belirli Bir Kategorinin Yazılarını Gizleme” yazısı için 4 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. raozkardes dedi ki:

    Yakup Öğretmenim Adana dan merhaba. Tatil olunca web dünyasından epey uzak kaldım.
    Geleyim sorunuma; Yukarıdaki kodu eski kod ile değiştirdim. Ama artık kategori linklerine tıkladığımda ana sayfada kalıyor. Sitenin sadece ana sayfası yenilenmiş oluyor. İlgili Kategori sayfasına gitmiyor. Sayfalama lnkleri çalşıyor. Sadece http://rasitozkardes.k12.tr/2008_2009/?cat=8 gibi olan linkler çalışmıyor.
    Önceki kulandığım ve sizin vediğiniz kod sorunsuz idi.

    1. [/if (is_home()) {
    2. $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    3. query_posts("cat=-9,-11&amp;paged=$paged");
    4. }

    Bu sorunun bir çözümü bulunabilirse sevinirim. Yoksa yukarıdaki kodu kullanmaya devam edeceğim.

    İyi tatiller diliyorum.

  2. raozkardes dedi ki:

    Yakup Öğretmenim tekrar merhaba.

    Verdiğiniz kod sizin anasayfanızda kategori linklerinize ulaşmanızı engellemedi mi? Bu sorunu sadece ben mi yaşıyorum?

  3. Yakup Gövler dedi ki:

    Kendi bilgisayarımda 2.8.4 sürümüyle denedim.
    Bir tane kategorideki yazıları gizledim, kategorinin yazıları ana sayfada görünmüyor ancak kategoriye tıkladığımda yazılar geldi. Önceki yazılar ve Sonraki yazılar bağlantıları çalıştı.
    Kalıcı bağlantı ayarlarını /%postname%/ şeklinde yaptım denedim yine çalıştı.
    Yukarıdaki yöntem yazıları seçmeden önce olaya müdahale ettiğinden normalde hiçbir problem olmaması gerekiyordu. Sizden ricam eğer mümkünse farklı bir temayla deneme yapınız.

  4. raozkardes dedi ki:

    default.tema ile deneyeyim birde. Siz de sorun yaşanmadığına göre kullandığım temadan kaynaklı olduğu görünüyor. Tema dosyalarını bi gözden geçirmem gerekli sanırım.
    Teşekkür ediyor, iyi tatiller diliyorum.