11 Eylül 2008

WordPress wp_list_categories Fonksiyonu

WordPress Yorum Ekle

WordPress'in belki de en çok kullanılan fonksiyonlarından biri olan wp_list_categories() fonksiyonu sağladığı esnek kullanımla Kategoriler menünüzü istediğiniz gibi düzenleyebilmenize olanak sağlıyor. Aslında bir tema fonksiyonu olan wp_list_categories() eklentilerde de rahatlıkla kullanılabilir. Yazımda fonksiyonun wordpress.org'da bulunan İngilizce açıklamanın çevirisini ve benim eklediğim örnek kullanımları bulabilirsiniz.

Açıklama:

wp_list_categories, tema etiketi kategorileri bağlantıları liste olarak görüntüler. Bir kategoriye tıklandığında, o kategorideki bütün yazılar tema hiyerarşisine bağlı olarak eğer varsa kategori sayfasında gösterilir.
Wordpress 2.1 ile birlikte bu fonksiyon list_cats() ve wp_list_cats() fonksiyonlarının yerine geçmiştir. Bu iki fonksiyon artık desteklenmemektedir.

Kullanım

  1. <?php wp_list_categories('parametreler'); ?>

Örnekler

Varsayılan Kullanım

$defaults = array(
'show_option_all' => '',
'orderby' => 'name',
'order' => 'ASC',
'show_last_update' => 0,
'style' => 'list',
'show_count' => 0,
'hide_empty' => 1,
'use_desc_for_title' => 1,
'child_of' => 0,
'feed' => '',
'feed_image' => '',
'exclude' => '',
'hierarchical' => true,
'title_li' => __('Categories'),
'echo' => 1,
'depth' => 0
);
Varsayılan kullanımda:

  • Bütün kategorilerin bağlantıları gösterilmez.
  • Kategoriler, kategori ismine göre artan (A->Z) sırada gösterilir.
  • Son güncellenen yazı gösterilmez (her kategorideki son güncelenen yazı).
  • Sırasız liste stiliyle gösterilir (ul etiketiyle).
  • Yazı sayıları gösterilmez.
  • Sadece içerisinde yazı bulunan kategoriler gösterilir.
  • Kategori açıklaması bağlantı başlığı (title) olarak ayarlanır.
  • Kullanılan besleme ya da besleme resmi gösterilmez.
  • Hiçbir kategori hariç tutulmaz, bütün kategoriler gösterilir ('include'=> parametresi yukarıda gösterilmemektedir).
  • Kategoriler hiyerarşik olarak gösterilir.
  • Listenin başında Kategori başlığı gösterilir.
  • Herhangi bir limit uygulanmaz ('number' => 0 parametresi yukarıda gösterilmemektedir
  • Kategoriler yazdırılır (ekrana basılır).
  • Alt kategoriler için derinlik limiti yoktur.

wp_list_categories(); // Varsayılan kullanım.

Parametreler

show_option_all
(string - metin) Eğer style (stil) parametresi list olarak ayarlanmışsa, bütün kategorilerin gösterilmesi için bir bağlantı oluşturur. Varsayılan değeri, bağlantı göstermeme şeklindedir.
orderby
(string) Kategorileri alfabetik, kategori noya ya da kategori içerisindeki yazı sayısına göre sıralar. Varsayılan, kategori ismine göre sıralamadır. Geçerli değerler:

  • ID
  • name - varsayılan
  • count

order
(string) Kategorileri (artan ya da azalan) sıralar. Geçerli değerler:

  • ASC - Varsayılan (artan A->Z)
  • DESC - (azalan Z->A)

show_last_updated
(boolean - mantıksal) Güncelleme zamanlamasına göre, her kategorideki son güncellenmiş yazıyı gösterir. Ancak bu parametre benim tahminim kullanımda değil, çünkü denediğimde bir sonuç alamadığım gibi, fonksiyon kodlarında bu parametre ile ilgili br kullanım yok. Geçerli değerler:

  • 1 (true - doğru)
  • 0 (false - yanlış) - Varsayılan

Style
(string) Kategori listesinin gösterilme şekli. list değeri kategorileri sırasız liste (ul etiketi için) olarak listelerken, none değeri özel bir listeleme metodu (liste elemanları <br> etiketi ile ayrılırlar) olmadan listeleme yapar. Geçerli değerler:

  • list - Varsayılan
  • none

show_count
(boolean) Her kategorideki yazı sayısını kategori başlığı sonunda gösterir/göstermez. Varsayılan değer göstermeme şeklindedir. Geçerli değerler:

  • 1 (true)
  • 0 (false) - Varsayılan

hide_empty
(boolean) İçerisinde yazı olmayan kategorileri gizler/gösterir. Varsayılan değer true olup, boş kategoriler gizlenir. Geçerli değerler:

  • 1 (true) - Varsayılan
  • 0 (false)

use_desc_for_title
(boolean) Kategori açıklamalarının, kategori bağlantısına title olarak eklenmesini sağlar (örnek: <a title="<em>Kategori Açıklaması</em>" href="...). Varsayılan değer true olup, kategori açıklamaları eklenir. Geçerli değerler:

  • 1 (true) - Varsayılan
  • 0 (false)

child_of
(integer - tamsayı) Sadece bu parametre ile verilen kategorinin alt kategorilerini listeler. Varsayılan değeri yoktur, değer olarak bir kategori id verilir. Bu parametre kullanıldığında, hide_empty parametresi false olarak ayarlanır.
feed (string)
Her kategorinin rss-2 beslemesi için bir bağlantı gösterir ve gösterilecek bağlantıyı gösterir. Varsayılan olarak metin gösterilmez ve hiçbir besleme gösterilmez.
feed_image
(string) Her kategorinin rss'si için bir resim adresi ayarlar. Bu parametre feed parametresini gerektirir. Bu parametre için varsayılan değer yok.
exclude
(string) Sonuçlardan bir veya birden fazla kategoriyi çıkarır. Bu parametre değer olarak artan sırada, virgül ile ayrılmış kategori id'lerinin bir liste alır. Örneğin; 5, 7 ve 9 nolu kategorileri listeden çıkartmak için exlude=5,7,9 yazılması gerekir. child_of parametresi otomatik olarak false olarak ayarlanır.
include
(string) Sadece artan sıralı olarak, virgülle ayrılmış kategori id listesindeki kategorilerin detaylarını gösterir. Örneğin; sadece 5, 7 ve 9 nolu kategorileri listede göstermek için include=5,7,9 yazılması gerekir.
hierarchical
(boolean) Alt kategorileri ana kategori altında alt liste olarak gösterir. Varsayılan değer true olup, alt kategorileri ana kategori altında gösterir). Geçerli değerler:

  • 1 (true) - Varsayılan
  • 0 (false)

title_li
(string) Listenin üstünde listeye eklenecek başlığı ayarlanır. Varsayılan "_Categories (Kategoriler)" dir. Eğer tanımlanır ancak boş bırakılırsa başlık gösterilmez. Başlık göstermemek için title_li= şeklinde yazmak gerekir.
number
(integer) Gösterilecek kategori sayısını ayarlar. Bu SQL LIMIT değeri tanımlanmasına neden olur. Varsayılan limit yok.
echo
(boolean) Üretilen sonucu gösterir ya da bir değişkene aktarır. Varsayılan değer true olup, kategoriler gösterilir. Geçerli değerler:

  • 1 (true) - Varsayılan
  • 0 (false)

depth
(integer) Bu parametre, kategori listesindeki kategorilerin hiyerarşi düzeyini kontrol eder. Varsayılan değer 0 olup, bütün kategorileri ve onların alt kategorilerini gösterir. Bu parametre WP 2.5'ten itibaren eklenmiştir. Geçerli değerler:

  • 0 - Bütün kategorileri ve alt kategorileri gösterir (Varsayılan)
  • -1 - Bütün kategorileri girinti olmadan gösterir (hierarchical parametresi üzerinde çalışır)
  • 1 - Sadece ana kategorileri gösterir
  • n - n (bir sayı) sayısı kadar alt düzeye inilir.

Örnekler

1. Kategorileri dahil etmek ya da çıkarmak

Kategorileri alfabetik olarak sıralamak ve sadece 16, 3, 9 ve 5 ID'ye sahip kategorileri listelemek için aşağıdaki kodu yazmalısınız:

  1. <ul>
  2.   <?php
  3.     wp_list_categories('orderby=name&include=3,5,9,15');
  4.   ?>
  5. </ul>

Aşağıdaki örnek, kategori bağlantılarını isme göre sıralar, her kategorinin yazı sayısını gösterir ve ID'si 5 ve 10 olan kategorileri listeden çıkarır.

  1. <ul>
  2.   <?php
  3.     wp_list_categories('orderby=name&show_count=1&exclude=5,10');
  4.   ?>
  5. </ul>

2. Kategori başlığını göstermek ya da gizlemek

title_li parametresi oluşturulan kategori listesi için başlığı görüntülemeyi ya da gizlemeyi ayarlar. Parametrenin varsayılan değeri '(__('Categories')' olup, başlık olarak "Categories" (Türkçe WP'de Kategoriler) kelimesini gösterir. Eğer parametreye null ya da boş bir değer atanırsa, başlık gösterilmez. Aşağıdaki örnek kod ID'si 4 ve 7 olan kategorileri listeden çıkararak, başlık olmadan kategorileri listeler:

  1. <ul>
  2.   <?php
  3.     wp_list_categories('exclude=4,7&title_li=');
  4.   ?>
  5. </ul>

Aşağıdaki kod ise 9, 5 ve 23 ID'li kategorileri "Şiir" kelimesini <h2> stilinde başlık olacak şekilde listeler.

  1. <ul>
  2.   <?php
  3.     wp_list_categories('include=5,9,23&title_li=<h2>Şiirler</h2>');
  4.   ?>
  5. </ul>

3. Sadece bir kategorinin alt kategorilerini göstermek

Aşağıdaki örnek kod ID'ye göre sıralı, ve ID'si 8 olan kategorinin alt kategorileri listesini oluşturur, ayrıca her kategorinin yazı sayısını gösterir ve üretilen bağlantılarda title olarak ayarlanan kategori açıklamalarını gizler. Not: Eğer ana kategoride yazı yoksa, ana kategori gösterilmez.

  1. <ul>
  2.   <?php
  3.     wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=8');
  4.   ?>
  5. </ul>

4. Kategorileri RSS Besleme bağlantıları ile göstermek

Aşağıdaki örnek kod isme göre sıralı, yanında her kategori için RSS besleme bağlantısı olacak şekilde, kategori yazı sayısıyla birlikte kategori listesi oluşturur.

  1. <ul>
  2.   <?php
  3.     wp_list_categories('orderby=name&show_count=1&feed=RSS');
  4.   ?>
  5. </ul>

RSS bağlantısında metin yerine besleme ikonu için, ise aşağıdakini kullanın:

  1. <ul>
  2.   <?php
  3.     wp_list_categories('orderby=name&show_count=1
  4. &feed_image=/images/rss.gif');
  5.   ?>
  6. </ul>

5. Kategori Listesini biçimlendirmek.

Aktif olan kategoriye current-cat class'ı (sınıfı) atanır. Diğer liste elemanları sınıf almazlar.
.......
<li class="current-cat">
[Aktif olan kategori bu]
</li>
<li>
[Başka bir kategori]
</li>
.......
Aktif olan kategoriyi aşağıdaki CSS sınıfıyla biçimlendirebilirsiniz:
.current-cat { ... }

Benim Örneklerim

Yazı sayılarına göre kategorileri listelemek
Aşağıdaki örnek kod, kategorileri kategorideki yazı sayısına göre, yazı sayılarını gösterecek şekilde, başlıksız olarak listeler:
orderby=name&show_count=1

  1. <ul>
  2.   <?php
  3.     wp_list_categories('orderby=count&order=DESC&show_count=1
  4. &title_li=');
  5.   ?>
  6. </ul>

Kategorileri hiyerarşik olarak listelemek
Aşağıdaki örnek kod, kategorileri hiyerarşik olarak, yazı sayılarıyla birlikte başlıksız olarak, içerilerinde yazı olmasa dahi listeler:

  1. <ul>
  2.   <?php
  3.     wp_list_categories('hierarchical=1&hide_empty=0&show_count=1&title_li=');
  4.   ?>
  5. </ul>

Fonksiyonu kullanırken unutmamanız gereken husus, fonksiyona girmediğiniz parametreler varsayılan değerleriyle kullanılırlar. Örneğin, yukarıdaki kodda kategoriler isim sırasına göre sıralanacaktır, çünkü biz orderby parametresini kullanmadık dolayısıyla fonksiyon bu parametrenin varsayılan değeri olan "name" değerini kullandı. O yüzden tam olarak nasıl bir listeleme yapmak istiyorsanız, o listeyi yaratacak parametreleri değerleriyle kullanmanız gerekir.
Not: Burada verilen örneklerden yola çıkarak kategorilerinizi istediğiniz gibi sıralayabilirsiniz. Başka listeleme örneği isterseniz lütfen yorum olarak ayrıntılı şekilde isteğinizi belirtiniz. Ayrıca Kategorileri açılır kutu olarak listelemek isterseniz bu durumda bu fonksiyon yerine wp_dropdown_categories fonksiyonunu kullanmalısınız.


Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=217.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“WordPress wp_list_categories Fonksiyonu” yazısı için 32 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. mustafa dedi ki:

    cok faydali bir site olmus. bir kac gundur WordPress i cozmek icin ugrasiyordum. Siteniz bana cok yardimci oldu. Tekrar tesekkur ederm. Ben Nigdede degilim ama internet sayesinde sizden ders almak nasib oluyor..
    saygilarimla

  2. WordPress get_categories Fonksiyonu · Yakup Gövler'in Not Defteri dedi ki:

    [...] parametrelere uyan kategorileri bir nesne dizisi olarak döndürür. Parametreler wp_list_categories fonksiyonu ile hemen hemen aynıdır ve hem sorgu ifadesi olarak hem de dizi olarak [...]

  3. azmiii dedi ki:

    teşekkürler Yakup bey son verdiğiniz kendi örneğinizi aramaktaydım saatlerdir...

  4. murat dedi ki:

    çok teşekkür ederim. süper anlatmışsınız. işime yaradı.
    iyi çalışmalar...

  5. kaan uğrasız dedi ki:

    Teşekkür ederim 🙂 Ellerinize sağlık.

  6. Kategorileri Virgül ile Ayırmak · Yakup Gövler'in Not Defteri dedi ki:

    [...] içerisindeki get_categories('hide_empty=0'); fonksiyonuna buradaki parametreleri girerek istediğiniz kategorileri çekebilirsiniz. Yukarıdaki kod ile kategori_liste [...]

  7. 1nci Piyade Blogų (: » Blog Archive » Kategorileri Virgül ile Ayırmak dedi ki:

    [...] içerisindeki get_categories(’hide_empty=0′); fonksiyonuna buradaki parametreleri girerek istediğiniz kategorileri çekebilirsiniz. Yukarıdaki kod ile kategori_liste [...]

  8. murat dedi ki:

    yani içinde henüz yazı olmayan kategorileimide kategoriler listesinde göstermek istiyorum. acemiyim böyle anladım fakat bunu hangi dosya içinde hangi kodun yerine yada yanına ekliyeceğim ne denediysem basaramadım yardımcı olabilirmisiniz lütfen 🙁

  9. Yakup Gövler dedi ki:

    WordPress'in Kategoriler bileşenini mi kullanıyorsunuz yoksa yan menüye kodları kendiniz mi ekliyorsunuz?

  10. murat dedi ki:

    evet WordPress'in kendi kateggoriler bileşenini kullanıyorum yazı eklemediğim kategorilerinde kategoriler listesinde boş olarak görünmesini istiyorum mümkünmü mümkünse bunu nasıl yapabilirim? tesekkürler

  11. Yakup Gövler dedi ki:

    Ne yazık ki istediğinizi yapabilmenin kolay bir yolu yok. Bunun için kullanabileceğiniz bileşenlere baktım ancak yeni sürümle uyumlu olan bulamadım. Eğer denerim derseniz, buradaki bileşen ile daha fazla seçenek elde edebilirsiniz. İngilizce ama idare edebilirsiniz.
    Ya da wp-includes/widgets.php dosyasını buradaki gibi açın.
    wp_list_categories($cat_args)
    kodunu bulun, bunu
    wp_list_categories($cat_args."&hide_empty=0")
    koduyla değiştirip, dosyayı kaydedin.

  12. murat dedi ki:

    ilginize tesekkur ederim ama malesef olmadı 🙁 verdiğiniz bileşeni denemiştim kodu değiştirdiğimdede sayfa hata verdi herhangi bir yazıyı tüm kategorilerde yayınladıgım zaman görebiliyorum ancak tüm kategorileri tekrar tesekkur ederim

  13. Yakup Gövler dedi ki:

    Dosyayı notepad++ gibi bir programla http://www.yakupgovler.com/?p=537 adresindeki yazımdaki gibi düzenlerseniz, hata almazsınız. Çünkü yöntemi kendi bilgisayarımda denedim, çalıştığını onayladım.

  14. ne_o dedi ki:

    Merhabalar,

    Verdiğiniz faydalı bilgiler için öncelikle teşekkürler. Benim şöyle bir sorum olacak. Ben yeni bir sayfa oluşturup belirlediğim bir kategorinin yazılarını direk bu sayfa altında da göstermek istiyorum. Uğraştım ancak bir türlü yapamadım Yeni oluşturduğum sayfa içerisine nasıl bir kod eklesem istediğim kategori yazılarını gösterebilirim.

    Yardımlarınız için şimdiden teşekkür ederim

  15. Hasan dedi ki:

    Merhaba hocam yaziniz icin tesekkürler, benim sorum sidebarda anakatagorilerin gözükmesi ve onlara tiklandiginda bagli bulunan altkatagorilerin altindan cikmasi, bunu nasil yapabiliriz acaba? Tesekkürler (suanda kullandigim kod: wp_list_cats('sort_column=name&optioncount=0&hierarchical=0'); ?> )

  16. Harun dedi ki:

    Bir kategoriye ait kaç yazı olduğunu o kategori adının altında değil de yanında göstermek istiyorum. Kategoriye ait yazı sayıları neden kategori adının altında görünür ki? Bu nerden düzenlenir bir türlü bulamadım. Sidebar'a bileşen olarak ekledim. Yani kodu elimle sidebar.php'ye eklemedim. Bu sebeple en azından tema dosyalarından kaynaklanmadığını sanıyorum.

  17. Yakup Gövler dedi ki:

    Buradan konuyla ilgili eski sürümlere dair çözüm bulabilirsiniz. Yorumları okumayı unutmayın. Problemin kaynağı kategori listesi içerisindeki bağlantılara CSS ile display:block uygulanmasıdır. Bu nedenle sadece CSS ile de düzeltilebileceğini düşünüyorum. Temanızın kodlarını görmeden de çözüm önermek mümkün değil gibi.

  18. daRaL dedi ki:

    Yakup merhaba 🙂

    " Kategorinin alt kategorilerini göstermek " bölümünde vermiş oldugun id yerine nasıl bir kod yazılabilir ki Sadece Ana kategorileri listelebiliriz. Yani bir nevi değişken. Gelen ziyaretçinin kategori id!sini okutup o kategoriye ait alt kategorileri nasıl listeleriz ?

    Bu konuda bilgi verirsen sevinirim. kolay gelsin

  19. Yakup Gövler dedi ki:

    $kat_id = get_query_var('cat');
    kodu aktif olan kategorinin bilgisini verir. $kat_id değişkenini wp_list_categories içerisinde kullanabilirsiniz.

  20. barış dedi ki:

    Gerçekten emek harcayıp açıklayıcı güzel birşeyler oluşturduğunuz için teşekkürler.
    Saygılarımla

  21. WordPress wp_list_categories Fonksiyonu dedi ki:

    [...] Kodu Al [...]

  22. CooLXviD dedi ki:

    http://i43.tinypic.com/29f7dxt.jpg
    http://i42.tinypic.com/2hg9ts8.jpg

    (Tema StudioPress Theme http://www.dailyblogtips.com/wordpress-themes/ )..Wordpress 2.6.5..

    Bu temada istediğim gibi kategorlerde feed adreslerini resimli olarak gösterebiliyorum..Fakat convergence temasıyla malesef bunu başaramadım..Öneriniz nedir acaba?...

    Teşekkürler....

  23. Yakup Gövler dedi ki:

    Yazıdaki 4. örnekteki feed_image parametresini kullanın.

  24. CooLXviD dedi ki:

    Sizin veriğiniz kodlar Benim kullanığım kod http://paste2.org/p/307055 malesef başaramadım...

    wp-includes/widgets editleyerek bunu yapmamız mümkünmü?...

  25. Yakup Gövler dedi ki:

    Resmin tam adresini verin.

    1. <?php wp_list_categories('show_count=1&title_li=&feed_image=http://www.siteadi.com/images/rss.jpeg'); ?>
  26. CooLXviD dedi ki:

    Hocam aslında resmin çıkıp çıkmaması problemim değil..Resmi bi şekile gösterebilirim ama varolan widgetlereden farklı olması Benim sorunum...Farklı şekilllerde farklı yerlere yerleştirim ama görüntü nahoş..
    http://i42.tinypic.com/2mrid5s.jpg
    http://paste2.org/p/307148

  27. Yakup Gövler dedi ki:

    wp-includes/widgets.php dosyasını buradaki gibi açın.
    wp_list_categories($cat_args)
    kodunu bulun, bunu
    wp_list_categories($cat_args."&show_count=1&title_li=&feed_image=http://www.siteadi.com/images/rss.jpeg")
    koduyla değiştirip, dosyayı kaydedin.

  28. CooLXviD dedi ki:

    Hocam çok teşekkürler....
    http://www.yakupgovler.com/wordpress-ozel-alan-fonksiyonlari.html

    Buradaki eklentiyie sabırsızlıkla bekliyorum..

  29. aska_surgun dedi ki:

    Kategori başlığını göstermek ya da gizlemek

    'exclude=4,7&title_li=' Kategori id'i 24 kodu ve İD i yazıp kaydediyorum ama kategori halen kategoriler bölümünde gözüküyor netten sadece bu kod ilede olabileceğini buldum 'exclude=3' ama malesef buda işe yaramadı kategori halen kategorile bölümünde gözüküyor yardımcı olurmusunuz

  30. Yakup Gövler dedi ki:

    wp_list_categories('parametreler'); fonksiyonunda kullandığınız parametreler kısmıyla beraber, komple kullandığınız kodu yazar mısınız? Bu kod yan menünüzde kategorileri bileşenle göstermiyorsanız işe yarar.

  31. Kalpsiz dedi ki:

    Merhabalar ben işlemi uygulamak istiyorum nasıl yapabilirim alt kategorilerin görünmesini istemiyorum sağ menüde nasıl gerçekleştirecez????

    "hierarchical
    (boolean) Alt kategorileri ana kategori altında alt liste olarak gösterir. Varsayılan değer true olup, alt kategorileri ana kategori altında gösterir). Geçerli değerler:

    * 1 (true) - Varsayılan
    * 0 (false) "

  32. Yakup Gövler dedi ki:

    @Kalpsiz, depth parametresini kullanarak alt kategorileri gizleyebilirsiniz.
    wp_list_categories('depth=1&title_li');
    Olmazsa ayrıca hiyerarşi parametresini false olarak ekleyin.