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
- <?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:
- <ul>
- <?php
- wp_list_categories('orderby=name&include=3,5,9,15');
- ?>
- </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.
- <ul>
- <?php
- wp_list_categories('orderby=name&show_count=1&exclude=5,10');
- ?>
- </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:
- <ul>
- <?php
- wp_list_categories('exclude=4,7&title_li=');
- ?>
- </ul>
Aşağıdaki kod ise 9, 5 ve 23 ID'li kategorileri "Şiir" kelimesini <h2> stilinde başlık olacak şekilde listeler.
- <ul>
- <?php
- wp_list_categories('include=5,9,23&title_li=<h2>Şiirler</h2>');
- ?>
- </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.
- <ul>
- <?php
- wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=8');
- ?>
- </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.
- <ul>
- <?php
- wp_list_categories('orderby=name&show_count=1&feed=RSS');
- ?>
- </ul>
RSS bağlantısında metin yerine besleme ikonu için, ise aşağıdakini kullanın:
- <ul>
- <?php
- wp_list_categories('orderby=name&show_count=1
- &feed_image=/images/rss.gif');
- ?>
- </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
- <ul>
- <?php
- wp_list_categories('orderby=count&order=DESC&show_count=1
- &title_li=');
- ?>
- </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:
- <ul>
- <?php
- wp_list_categories('hierarchical=1&hide_empty=0&show_count=1&title_li=');
- ?>
- </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.
Tarih: 12 Eylül 2008 Saat: 06:28
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
Tarih: 19 Ekim 2008 Saat: 18:33
[...] 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 [...]
Tarih: 02 Ocak 2009 Saat: 01:24
teşekkürler Yakup bey son verdiğiniz kendi örneğinizi aramaktaydım saatlerdir...
Tarih: 24 Ocak 2009 Saat: 16:52
çok teşekkür ederim. süper anlatmışsınız. işime yaradı.
iyi çalışmalar...
Tarih: 07 Mart 2009 Saat: 15:53
Teşekkür ederim 🙂 Ellerinize sağlık.
Tarih: 17 Mart 2009 Saat: 22:03
[...] içerisindeki get_categories('hide_empty=0'); fonksiyonuna buradaki parametreleri girerek istediğiniz kategorileri çekebilirsiniz. Yukarıdaki kod ile kategori_liste [...]
Tarih: 18 Mart 2009 Saat: 02:53
[...] içerisindeki get_categories(’hide_empty=0′); fonksiyonuna buradaki parametreleri girerek istediğiniz kategorileri çekebilirsiniz. Yukarıdaki kod ile kategori_liste [...]
Tarih: 23 Mart 2009 Saat: 18:00
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 🙁
Tarih: 23 Mart 2009 Saat: 21:18
WordPress'in Kategoriler bileşenini mi kullanıyorsunuz yoksa yan menüye kodları kendiniz mi ekliyorsunuz?
Tarih: 24 Mart 2009 Saat: 03:15
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
Tarih: 24 Mart 2009 Saat: 08:03
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.
Tarih: 24 Mart 2009 Saat: 11:31
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
Tarih: 24 Mart 2009 Saat: 14:52
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.
Tarih: 04 Nisan 2009 Saat: 17:17
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
Tarih: 09 Nisan 2009 Saat: 15:50
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'); ?> )
Tarih: 11 Mayıs 2009 Saat: 01:49
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.
Tarih: 11 Mayıs 2009 Saat: 04:03
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.
Tarih: 17 Mayıs 2009 Saat: 17:30
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
Tarih: 17 Mayıs 2009 Saat: 19:25
$kat_id = get_query_var('cat');
kodu aktif olan kategorinin bilgisini verir. $kat_id değişkenini wp_list_categories içerisinde kullanabilirsiniz.
Tarih: 26 Mayıs 2009 Saat: 00:54
Gerçekten emek harcayıp açıklayıcı güzel birşeyler oluşturduğunuz için teşekkürler.
Saygılarımla
Tarih: 04 Temmuz 2009 Saat: 04:01
[...] Kodu Al [...]
Tarih: 06 Temmuz 2009 Saat: 14:06
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....
Tarih: 06 Temmuz 2009 Saat: 15:22
Yazıdaki 4. örnekteki feed_image parametresini kullanın.
Tarih: 06 Temmuz 2009 Saat: 18:43
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ü?...
Tarih: 06 Temmuz 2009 Saat: 18:55
Resmin tam adresini verin.
Tarih: 06 Temmuz 2009 Saat: 19:36
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
Tarih: 06 Temmuz 2009 Saat: 21:21
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.
Tarih: 07 Temmuz 2009 Saat: 02:00
Hocam çok teşekkürler....
http://www.yakupgovler.com/wordpress-ozel-alan-fonksiyonlari.html
Buradaki eklentiyie sabırsızlıkla bekliyorum..
Tarih: 05 Ağustos 2009 Saat: 15:21
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
Tarih: 05 Ağustos 2009 Saat: 15:38
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.
Tarih: 30 Eylül 2009 Saat: 01:52
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) "
Tarih: 06 Ekim 2009 Saat: 06:15
@Kalpsiz, depth parametresini kullanarak alt kategorileri gizleyebilirsiniz.
wp_list_categories('depth=1&title_li');
Olmazsa ayrıca hiyerarşi parametresini false olarak ekleyin.