WordPress kullanıcıları için yeni bir taktik daha öğreticem. Çok kategoriniz olduğunda sitenin ana sayfası çok karmaşık olabiliyor. Yada sitenin içeriği farklılaşabiliyor vs. vs. Şimdi size göstericeğim kod doğru çalışıyor ve uğraştırıcı bir kod değil. İstemediğiniz kategoriyi seçip ana sayfada yani index.php’de çıkmasını engelleyeceğiz.
Ana Sayfadan Kategori kaldırma
Bunun bir çok yöntemi var ben size hepsini anlatıcam ancak ilk önce kesinlikle düzgün çalışanı anlatıcam. Kendimde bu kodu kullanıyorum sizede tavsiye ediyorum. Diğerleri alternatif olarak kullanılabilir fonksiyon çalışmazsa yani ama çalışmama gibi bir durum yok 🙂
Tabi bunu yapmadan önce kategori ID numarasını bilmeniz gerekiyor eğer bu konu ile ilgili hiç bir bilgiye sahip değilseniz Kategori ID nasıl bulunur? yazımı incelemenizi tavsiye ederim.
Yukarıda bahsettim bir çok yöntem var diye functions.php, index.php ve son olarak css ile kategorileri kaldırıcaz.
1) Functions.php ile kategori kaldırma
Bunu bende kullanıyorum çalışıyor problem yok. Şöyle bir durum var bu kodu koyduğunuzda yan menüdeki son yazılardanda kaldırıyorsunuz aslında. Sadece kategorisine tıklanınca açılıyor.
-10, -20, -30 Bunlar birer ID numaraları. -10 ID’si 10 olan kategoriyi iptal et demek istiyoruz.
Aşağıdaki kodu functions.php’de en alta ?> öncesine yapıştırıyoruz.
function catExclude($query) { if ($query->is_home) { if (!$query->get('cat')) { $query->set('cat','-10,-20,-30'); //-10 Kategori ID'si. -20, -30 olarak çoğaltabiliriz. } } return $query; } add_filter('pre_get_posts','catExclude');
2) in_category() Özelliği
Temamızın index.php kodları arasında aşağıdaki kodu göreceksiniz.
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
Yukarıdaki kodun altına aşağıdaki kodumuzu ekliyoruz. Aşağıdaki kodumuzdaki 10 yerine kategori ID numaramızı yazıyoruz.
<?php if (in_category('10')) continue; ?>
Eğer yukarıdaki gibi birden fazla eklemek istiyorsanız alttaki kodu ekleyin.
<?php if ( (in_category('10')) || (in_category('20')) ) continue; ?>
3) query_posts() Özelliği
2.Seçenekteki gibi aşağıdaki kodu buluyoruz index.php dosyamızda.
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
Bu sefer yukarıdaki kodun altına değil onun yerine alttaki kodu yazıyoruz. Alttaki kodda 10 numaralı ID’deki kategoriyi iptal ettik.
<?php if (have_posts()) : query_posts("cat=-10"); while (have_posts()) : the_post();?>
Birden fazla kategoriyi iptal etmek istiyorsak virgülle ayırıp (-) işaretini koyduktan sonra ID’yi yazıyoruz. Alttaki gibi
<?php if (have_posts()) : query_posts("cat=-10,-20,-30"); while (have_posts()) : the_post();?>
Eğer pagenavi gibi bir eklenti kullanıyorsak yani sayfalama yapıyorsak alttaki kodu kullandığımızda problem çıkmayacaktır.
<?php if (have_posts()) : $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts("cat=-10,-20,-30&paged=$paged"); while (have_posts()) : the_post();?>
4) CSS ile gizlemek
Bu yöntemi önermiyorum ama mecbur kalırsanız kesin çözümde diyebilirim yada uğraşmak istemiyorsanız. WordPress’lerde class’ları mutlaka kullanıyorsunuzdur. Eğer sistem temasını kullanıyorsanız zaten class’ları otomatik ekliyor. Class’a göre display:none verebilirsiniz.
Class şu şekilde oluşur wordpress’te category_kategoriadi yani kategori adı kısmını siz girin örneğin kategori adı mutfak ise category_mutfak class’ı otomatik eklenmiştir.
.category_mutfak{display:none}
Bu şekilde kategoriyi gizledik ama bu şekilde kategoriye tıklandığında içerikler gelmeyecek bunuda önlemek için body’e WordPress’in otomatik eklediği kategori class‘ını kullanıcaksınız.
.category-12{display:block}
Yukarıdaki kodda gizledik daha sonra dedikki bu kategoride block yani göster 🙂
Tüm işlemler bu kadar ama benim önerdiğim 1.yöntem.