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.
- <?php
- function excludeCategory($query)
- {
- if($query->is_home)
- $query->set(‘cat’,’-7′);
- return $query;
- }
- add_filter(‘pre_get_posts’, ‘excludeCategory’);
- ?>
Ö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.
- <?php
- function excludeCategory($query)
- {
- if($query->is_home || $query->is_feed)
- $query->set(‘cat’,’-7′);
- return $query;
- }
- add_filter(‘pre_get_posts’, ‘excludeCategory’);
- ?>
Ş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.
Teşekkürler Bende bunu arıyordum 🙂
wordpresste yeniyim bu kaynak işime bayağı bir yarayacak.
Ö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?
Bende sorun çıkarmamştı hocam uygun bir zamanda hatırlat inceleriz çok yoğunum bu ara bakacak durumda değilim.
bunun blogger tabanlı siteler için kod bilginiz va rmı hocam
Maalesef ibo
tmm dostum saolsın
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’);
eyw kardeşim saolasın..
Arkadaşlar hiç bi şekilde çalışmıyor kodlar ölüm ekranı geliyor her seferinde
Hocam ben belirlediğim yazı idlerini hiç bir yerde göstermek istemiyorum nasıl yaparız?