Bazı durumlarda WordPress sitemizin anasayfasında bazı kategorilerin yazılarının listelenmesini istemediğimiz durumlar olabilir. Bu yazıda WordPress altyapısına sahip bir sitenin anasayfasında bazı kategorilere ait yazıların görünmesini engellemek için yapabileceklerimizi anlatmaya çalışacağım.
Bu iş için yine her zaman olduğu gibi birden fazla çözüm yolumuz mevcut. Bu çözümleri uygulayabilmek için kategorilerin ID değerlerini bilmemiz gerekmektedir. Kategori ID’lerini yönetim panelinde kategorileri listeleyip mouse ile Düzenle bağlantısının üzerlerine gelerek görebilirsiniz.
eçenek 1:
İlk seçeneğimiz in_category() fonksiyonundan yararlanmak olacaktır.
<?phpif(have_posts()) :while(have_posts()) : the_post(); ?>
index.php dosyamızda yer alan yukarıdaki kodu bulup koddan hemen sonra aşağıdaki kodu ekliyoruz. Kodda 1 gördüğümüz yere kategori ID numarasını yazıyoruz.
<?phpif(in_category('1'))continue; ?>
Eğer birden fazla kategorinin yazılarını gizleyeceksek aşağıdaki şekilde in_category() fonksiyonumuzu tekrarlıyoruz.
<?phpif( (in_category('1')) || (in_category('5')) || (in_category('20')) )continue; ?>
Seçenek 2:
İkinci seçeneğimiz; query_posts() fonksiyonuna parametreler vererek bu işlemi yapmaktır. index.php dosyamızda yer alan döngü başlangıcı öncesi bu fonksiyonu kullanarak sitemizin anasayfasında bir veya birden çok kategorinin yazılarının çıkmasını engelleyebiliyoruz.
<?phpif(have_posts()) :while(have_posts()) : the_post(); ?>
index.php dosyamızda yer alan yukarıdaki kodu bulup aşağıdaki kod ile değiştiriyor ve cat=-1 yazan bölüme kategori ID numarasını – (eksi) işareti vererek yazıyoruz.
<?phpif(have_posts()) : query_posts("cat=-1");while(have_posts()) : the_post();?>
Birden çok kategorinin yazılarını listelememek için başına – (eksi) koyduğumuz kategori ID numaralarını virgülle ayırıp ardarda yazıyoruz.
1.<?phpif(have_posts()) : query_posts("cat=-1,-5,-20");while(have_posts()) : the_post();?>
Bu düzenlemenin ardından işlemimiz bitti mi? Hayır. Bu yazdığımız kod anasayfamızda gayet düzgün bir şekilde çalışacaktır fakat önceki yazıları görmek için diğer sayfalara geçmek istediğimizde problem çıkartacak ve daima anasayfadaki yazılar görünecektir. Bu sorunun önüne geçmek için bir düzenleme daha yapmamız gerekiyor. Bu düzenleme ile kodumuzun son hali şu şekilde olacaktır.
<?phpif(have_posts()) :$paged= (get_query_var('paged')) ? get_query_var('paged') : 1;query_posts("cat=-1,-5,-20&paged=$paged");while(have_posts()) : the_post();?>
Artık “Önceki Yazılar” bağlantımız (Eğer bir sayfa etiketleme eklentisi kullanıyorsak sayfa numaralarımız) da sorunsuz bir şekilde çalışacak ve 2., 3. sayfalara geçişte herhangi bir problemle karşılaşmayacağız.