Anasayfada istemediğiniz yazı görünmesin

Biraz önce bir arkadaşıma bu konuda yardımcı oldum sizlerle paylaşmak istedim. Şimdi WordPress’te bazı kategorilerde yazılan yazıları ana sayfada görmek hoş olmuyor. Özellikte site tanıtımları kategorisi falan çok dikkat çekmesin, ana sayfada yer kaplamasın istiyorsanız bu sistem tam size göre. Bunu yapmak için eklentilerde mevcut ancak ben eskidende belirttiğim gibi çok eklenti kullanmayı tavsiye etmiyorum. Çünkü eklentiler sistemde açık oluşturabilmektedir.
Burada amaç en basit ve pratik yollardan işimizi birkaç satır kodla halletmek. Şimdi bizim site tanıtımları adında bir kategorimiz olsun. Biz bu kategorideki yazıları ana sayfada göstermemek istiyoruz. Öncelikle kategorimizin ID’si lazım bize. Kategori ID’ sini panelden bakarak öğreniyoruz. Diyelim ki kategori ID’si 7 olsun. Biz bu 7 ID numarasına sahip kategorimizin yazılarını ana sayfada göstermek istemiyoruz. Yapılması gerekenler ilk önce temanızda functions.php dosyasına gideceğiz. Bu dosya temanın fonksiyonlarının yazılmış olduğu dosyadır. Aşağıda vereceğim kodu oraya eklemeniz yeterli olacaktır.

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

Önemli Not:  Evet arkadaşlar şimdi bu kodu eklediğimizde sistem bize 7 numaralı ID’ye sahip olan kategoriye ait nekadar yazı olursa olsun ana sayfada göstertmeyecek. Ancak şöyle bir durum var. Diyelim ki bir yazı yazdınız bu hem ID numarası 7 hemde 18 olan bir kategoriye ait, o yazıda ana sayfada görünmeyecektir. Birde şöyle yapabilirsiniz; Ben birden fazla kategorideki yazıları gizlemek istiyorum ana sayfada gözükmesin diyorsanız eğer (‘cat’, ‘-7,  -14, -19, -23’) olarakta yazabilirsiniz. Bu durumda yazmış olduğunuz ID’ye sahip kategorideki yazılar ana sayfada gözükmezler.
Birde şöyle durum var. RSS kısmında da görmemek isteyebilirsiniz yazıları. Onun içinde birkaç satır kod ile bunu halledebilirsiniz. Değiştirilecek şekilde aşağıda belirtiyorum. Hangisi size uygunsa onu yazabilirsiniz.

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

 
Şimdi yukarıda yazmış olduğumuz kodda ‘pre_get_posts’ filtresini kullandık. Bu filtre birtakım koşul etiketleri olan is_category, is_archive gibi diğer yerlerde bulunan yazılarınızı da gizlemenize yarayacaktır. Ben sitemde kullanıyorum bunu gayette işime yarıyor. Belirli kategorilerde konu açsam da ana sayfada göstertmiyorum. Umarım işinize yarar. Ertan’dan buraya kadar. Keyifle kullanın aman sitenizi bozmayın dediklerimi dikkatlice okuyup uygulayın.

11 Yorum
  1. Çağrı

    Teşekkürler Bende bunu arıyordum 🙂

  2. seher

    wordpresste yeniyim bu kaynak işime bayağı bir yarayacak.

  3. Ahmet Çetintaş

    Öncelikle bu güzel anlatım için teşekkürler. 
    Ancak bu kodları functions.php dosyasına eklediğimde beyaz sayfa çıkıyor ve tekrar silip eski haline çevirmek durumunda kalıyorum. Bunu nasıl çözebilirim?

    1. Ertan Dönmez

      Bende sorun çıkarmamştı hocam uygun bir zamanda hatırlat inceleriz çok yoğunum bu ara bakacak durumda değilim.

  4. ibrahim

    bunun blogger  tabanlı siteler için  kod bilginiz va rmı hocam

    1. Ertan Dönmez

      Maalesef ibo

  5. ibrahim

    tmm dostum  saolsın

  6. Çağrı

    Byeaz sayfa ya da herhangi bir hata alanlar birde bu kodu denesin:
    // ana sayfadan kategori post gizleme rssler dahil
    function exclude_category($query) {
        if ( $query->is_feed || $query->is_home ) {
            $query->set(‘cat’, ‘-26, -65, -75’);
        }
    return $query;
    }
    add_filter(‘pre_get_posts’, ‘exclude_category’); 

  7. dizi izle

    eyw kardeşim saolasın..

  8. Caner

    Arkadaşlar hiç bi şekilde çalışmıyor kodlar ölüm ekranı geliyor her seferinde

  9. lig radyo

    Hocam ben belirlediğim yazı idlerini hiç bir yerde göstermek istemiyorum nasıl yaparız?

Cevap Gönder

E-posta adresiniz yorumunuzda yayınlanmayacaktır.