WordPress’te Alt Kategorileri(varsa) Listelemek

WordPress temalarında birçok yerde ihtiyacımız olan alt kategorileri listeleme konusunda yine bir temada döngüyü yazıyordum, bunu ihtiyacı olan başka kişilerin de kullanabilmesi için paylaşmak istedim.

Artık anlatımlarımı yaparken bu konuda çok bilgisi olmayıp da ilgi duyan kişilerin de faydalanmasını gözeterek basitleştirmek için elimden geleni yapacağım.

Örneğin şehir şehir kategorilendirdiğiniz bir siteniz var. Ankara, İstanbul, İzmir gibi iller ve bunların alt kategorileri var. (yani ilçeler. örneğin: Ankara: -Çankaya, -Yenimahalle…) İstediğimiz sistem şöyle: Ankara kategorisine girildiğinde bunun alt kategori olan Ankara ilçeleri görüntülensin ve bir ilçe kategorisine girildiğinde yine Ankara’nın ilçeleri listelensin. (yani aynı kategoriye ait diğer alt kategoriler). Bunu il-ilçe olarak değil de a-z sıralaması ile sanatçı listelemesi gibi yerlerde de kullanabilirsiniz.

Bunu tabii ki temanın category.php ( bu yoksa archive.php ( bu da yoksa index.php ) ) de kullanacağız.

Php’de ara ara açıklama satırında kullandığım kodları anlatmaya çalıştım. Sanırım tema kodlayacak düzeyde bilgili olan kişiler bunu rahatlıkla anlayacak, gerekli düzenlemeleri yapacaklardır.

<?php
$categories2 = get_categories(array( 'include' => $cat, 'hide_empty' => 0 )); //ana kategori
$ata=$categories2[0]->category_parent; // kategorinin ait olduğu üst kategori
$dede= $categories2[0]->category_grandparent; // üst kategorinin de ait olduğu 3. düzey kategori
$categories =  get_categories('child_of='.$ata.'&hide_empty=0'); // bulunduğumuz kategorinin ait olduğu kategorinin alt kategorileri
$categories3 =  get_categories('child_of='.get_query_var('cat').'&hide_empty=0'); // bulunduğumuz kategorinin alt kategorileri
$hom = get_bloginfo('home'); // anasayfa url
if($ata==!""){ // kategorinin ait olduğu bir kategori varsa ?>
<p>İlçeler: </p>
<ul>
<?php
foreach ($categories as $category) {
if(get_query_var('cat')==$category->cat_ID){ echo '<li class="current-menu-item"><a href="'.$hom.'/?cat='.$category->cat_ID.'" title="'.$category->cat_name.' adlı kategorideki tüm yazılar">'.$category->cat_name.'</a></li>'; } else {
echo '<li><a href="'.$hom.'/?cat='.$category->cat_ID.'" title="'.$category->cat_name.' adlı kategorideki tüm yazılar">'.$category->cat_name.'</a></li>';}}?>
</ul>
<?php } elseif($categories3[0]->cat_ID==!"") { // bulunduğumuz ana kategorinin alt kategorileri varsa ?>
<p>İlçeler: </p>
<ul>
<?php
foreach ($categories3 as $category) {
echo '<li><a href="'.$hom.'/?cat='.$category->cat_ID.'" title="'.$category->cat_name.' adlı kategorideki tüm yazılar">'.$category->cat_name.'</a></li>';}?>
</ul>
<?php } ?>

-Herhangi bir kategori ID’si girmeden, otomatik olarak çalışmaktadır.

7 Comments

    • wp_list_categories(); komutuyla çektiğiniz kategorilerin alt kategorilerileri de zaten çıkması gerekir. ama çıkmıyorsa wp_list_categories(‘depth=5’); yazarak deneyebilirsiniz.
      5 derinlik derecesidir. yani alt alta 5. kategoriye kadar gösterir. 10,20 yapabilirsiniz ihtiyaca göre.

  1. savaş

    Selamlar Hocam; elinize sağlık temiz ve güzel anlatmışsınız ek olarak çok da faydalı ancak benim aradığım şey tam olarak bu değil, bahsettiğiniz düzenlemeyi yaptım –> ilkokulum.com/ilkokul/

    Fakat ben bu şekilde göstersin istemiyorum, yani ilkokul a tıkladığında nasıl postlar aşağıda dızılıyorsa o şekilde , sadece 1 alt kategorileri listelensin istiyorum, yani alttaki tüm kategorileri değil sadece 1 alt kategoriyi göstersin ve post şeklinde dizsin böyle birşey olabilir mi?

    Ayrıca bu yukarıdaki verdiğim linkteki sayfaya girildiğinde ve bir alt kategori olan 2. sınıfa tıklandığında hala üst kategoriler gözüküyor, buna gerek varmı bılmıyorum?

  2. savaş

    Ya da şöyle olabılır , altın bir altını bu şekilde gösterirse çok daha iyi olur gibi?

    İlkokul Yıllık Planlar
    1. Sınıf Yıllık Planlar
    2. Sınıf Yıllık Planlar
    3. Sınıf Yıllık Planlar
    4. Sınıf Yıllık Planlar

    • savaş

      Yazdım lakin olmamış,

      bahsettiğim şuydu
      İlkokul Yıllık Planlar
      -1. Sınıf Yıllık Planlar
      -2. Sınıf Yıllık Planlar
      -3. Sınıf Yıllık Planlar
      -4. Sınıf Yıllık Planlar

  3. ANIL VAHAP GELEGEN

    display_name); echo(‘" Tarafından Eklenen Konular’); endif; ?>

    Kategorileri listelemek istiyorum bende kardeş payı mesela bu archive php nasıl düzenlemem gerekir. bu benim archive.php dosyam

  4. Alper AYDIN

    Ellerinize sağlık, ihtiyacıma göre küçük bir düzeltme yaptım seo için.

    href=”‘.$hom.’/?cat=’.$category->cat_ID.'”
    yerine
    href=”‘.get_category_link($category->cat_ID).'”
    şeklinde kullanırsak linkler cat=11 şeklinde değil seo uyumlu çıkacaktır.

    Teşekkürler

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir