19 Ekim 2008

WordPress get_categories Fonksiyonu

WordPress Yorum Ekle

Özellikle kategorilerle ilgili eklenti/bileşen yazarken, kategorilerin listesini elde etmek isteriz. Tabi ki bu listede sadece kategori adlarının değil de başka bilgilerin de olmasını, hatta bazen özelleştirdiğimiz bir liste elde etmek isteriz. Bunu yaparken kullanacağımız fonksiyonların başında şüphesiz get_categories fonksiyonu geliyor. Bu fonksiyon ile ilgili WordPress Codex'teki yazının Türkçe çevirisini yazımın devamında bulabilirsiniz.

Açıklama

Girilen 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 girilebilir.

Kullanım

<?php $categories = get_categories(parametreler); ?>

Örnekler

Fonksiyonun kullanımına ilişkin çeşitli örnekler.

Varsayılan Kullanım

Varsayılan kullanımdaki parametreler ve varsayılan değerleri.

  1. <?php $defaults = array('type' => 'post',
  2.             'child_of' => 0,
  3.             'orderby' => 'name',
  4.             'order' => 'ASC',
  5.             'hide_empty' => true,
  6.             'include_last_update_time' => false,
  7.             'hierarchical' => 1,
  8.             'exclude' => ,
  9.             'include' => ,
  10.             'number' => ,
  11.             'pad_counts' => false);
  12. ?>

Açılır Kutu

Aşağıda geçmiş olayları göstermek için kullanılan bir kategoriye ait, alt kategorilerin listelendiği bir açılır kutunun nasıl yaratılacağı yer almaktadır. Aylık arşivlerin oluşturulmasında kullanılan wp_get_archives fonksiyonuyla aynı işi yapmaktadır.
Alt kategorisini göstermek istediğiniz kategorinin id'si 10 olsun ve kategorinin kısa adı "arsiv" olsun. Bu kategorinin alt kategorilerini açılır kutu şeklinde gösteren koda aşağıdan ulaşabilirsiniz.

  1. <select name="event-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
  2.  <option value=""><?php echo attribute_escape(__('Select Event')); ?></option>
  3.  <?php
  4.   $categories=  get_categories('child_of=10');
  5.   foreach ($categories as $cat) {
  6.     $option = '<option value="/category/archives/'.$cat->category_nicename.'">';
  7.     $option .= $cat->cat_name;
  8.     $option .= ' ('.$cat->category_count.')';
  9.     $option .= '</option>';
  10.     echo $option;
  11.   }
  12.  ?>
  13. </select>

[

Parametreler

type: (metin) Kategorinin türü.

  • post - yazı kategorisi (varsayılan)
  • link - bağlantı kategorisi

child_of: (tamsayı) Sadece, ID numarası verilmiş olan kategorinin alt kategorilerini gösterir. Bu parametre için varsayılan değer yoktur. Eğer bu parametre kullanılırsa, hide_empty parametresi false değerini otomatik olarak alır.
orderby: (metin) Kategorileri ID ya da ismine göre sıralar. Varsayılan kategori ID'sine göre sıralamadır. Alabileceği değerler ID (varsayılan) ve name (isim)
order: (metin) Kategorilerin sıralama türü (artan ya da azalan). Varsayılan artan sıralamadır. Alabileceği değerler ASC (varsayılan - artan), DESC (azalan)
hide_empty: (mantıksal) Yazısı olmayan kategorileri gösterir/göstermez. Varsayılan 'true' (varsayılan - boş kategoriler gizlenir). Alabileceği değerler 1 (true - varsayılan), 0 (false)
include_last_update_time: (mantıksal) Ne yaptığı kesin belli değil. Alabileceği değerler 1 ve 0 (varsayılan)
hierarchical: (mantıksal) Alt kategorileri girdili şekilde listeler. Alabileceği değerler, 1 (true - varsayılan), 0 (false)
exclude: (metin) Bir ya da daha fazla kategoriyi listeden çıkartmayı sağlar. Bu parametre kategori ID'lerini aralarında virgül (,) ile ayrılmış olarak alır. Örnek için wp_list_categories
include: (metin) Sadece belli kategorilerle ilgili bilgileri almak için kullanılır. Bu parametre kategori ID'lerini aralarında virgül (,) ile ayrılmış olarak alır. Örnek için wp_list_categories
number: (metin) Gösterilecek kategori sayısı.
pad_counts: (mantıksal) Yazı/bağlantı sayısı hesaplanırken, alt kategorilerinkinin de dahil edilip, edilmeyeceğini belirler. Alabileceği değerler 1 (true) ve 0 (false - varsayılan)


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

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 get_categories Fonksiyonu” yazısı için 14 Yorum

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

  1. cumasi dedi ki:

    Kategorilere rss nasıl ekleyebilirim?.. Benim Kategorilerim bu şekilde.. http://pic.leech.it/i/11e73/6f96f715a01.jpg
    Bu şekilde kategori ve alt kategorilere nasıl rss ekleyebilirim? http://pic.leech.it/i/a0e18/1250398d112.jpg

    (Tema StudioPress Theme http://www.dailyblogtips.com/wordpress-themes/ )..Wordpress 2.6.5..
    Teşekkürler

  2. Yakup Gövler dedi ki:

    Verdiğiniz ikinci resimi tam anlayamadım. Resimdeki RSS ikonlarına tıklandığında kategorinin RSS adresine gidecek, kategori ismine tıklandığında ise kategorideki yazılar mı gösterilecek? Eğer böyleyse http://www.yakupgovler.com/?p=217 adresindeki yazıda bahsedilen feed=RSS parametresi ve feed_image parametlerini kullanarak ve resmi de CSS ile konumlandırarak istediğinize ulaşabilirsiniz. Ayrıca yazının İngilizcesindeki örnekleri de incelemenizi tavsiye ederim. Yok istediğiniz sadece kategorilerin feed (besleme) adreslerini almak ise
    get_category_feed_link($cat_id, $rss_tipi);
    fonksiyonunu kullanarak kategori ID'sini bildiğiniz bir kategorinin istediğiniz tipteki RSS adresini alabilirsiniz. Aşağıdaki gibi kullanırsanız RSS2 tipinde besleme adresini alabilirsiniz.
    get_category_feed_link(10);
    ID'si 10 olanın RSS adresini verir.

  3. cumasi dedi ki:

    Bu şekilde değiştirerek http://pic.leech.it/i/caf9a/12d419d48381.jpg bu şekilde RSS ekledim fakat görüntü pek hoş durmadı..
    feed=RSS yerine
    feed_image=/images/rss.gif bunu denedim fakat gerekli CSS düzenlesini yapamadım.. http://pic.leech.it/i/a0e18/1250398d112.jpg Bu şekilde bir görüntü elde etmek için ne yapmalıyım...

    Teşekkürler

  4. cumasi dedi ki:

    Sanırım güvenlik sebebiyle kodlar çıkmıyor..Kodları buraya ekledim..
    http://tinypaste.com/e6fce

  5. Yakup Gövler dedi ki:

    Ne yazık ki yaptığım denemelerde kategori sayılarıyla birlikte istediğiniz görüntüyü sağlatamadım. Bahsettiğiniz görüntüyü eğer bir siteden edindiyseniz, site yöneticileriyle iletişime geçmenizi öneriyorum, belki kullandıkları özel bir bileşen vardır.
    Kategorilerin listelenmesini sağlayan fonksiyon wp-includes/classes.php içerisinde function start_el fonksiyonu içerisinde yer alıyor. Belki orada düzenleme yaparak bir yerlere varabilirsiniz.

  6. cumasi dedi ki:

    Hocam CSS de değişiklik yapmadan sadece şu kodları http://tinypaste.com/bbdd4 sidebara girdim..

    Görüntü bu http://pic.leech.it/i/65061/86d29a5725c1.jpg Rss de bi sorunda yok..Fakat rss image nasıl sağa çekebilirim?..wp-includes/classes.php içerisinde function start_el fonksiyonu içerisindemi acaba?..

  7. Yakup Gövler dedi ki:

    Önceki mesajımda dediğim gibi kategorileri o şekilde listeleme işini yapan fonksiyon start_el fonksiyonu.
    Bu fonksiyonu http://tinypaste.com/c6822 adresindeki gibi değiştirirseniz işinizi görürsünüz. Kod WP 2.7 sürümünden alınmıştır.

  8. cumasi dedi ki:

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

  9. cumasi dedi ki:

    Hocam bir sorunla karşılaştım anasayfada sorun yok
    http://pic.leech.it/i/2f93b/7904829e4c1.jpg

    Fakat kategori ve konulara girnce böle bi sorun var...
    http://pic.leech.it/i/ccd19/08a47783asterixetl.jpg
    Öneriniz varmı acaba?

  10. Yakup Gövler dedi ki:

    Şimdi fonksiyonda şöyle bir durum var, eğer bir kategori tıklanmışsa bu durumda tıklanan kategorinin hangisi olduğunu işaretlemek için current-item diye bir sınıf ekleniyor bağlantılara. Muhtemelen düzenleme yaparken bunu gözardı etmiş olabiliriz. Yukarıda verdiğim fonksiyonun şu anki içeriğini tinypaste'e aktarıp, bağlantısını verirseniz, ben de bir deneme yapabilirim.

    Düzenleme: wp_list_categories fonksiyonunu aşağıdaki gibi çağırın.
    wp_list_categories('orderby=name&show_count=1
    &feed=1&feed_image=http://www
    .siteadi.com/rss.gif&title_li=');
    olarak çağırın. Yani feed=1 ve resim adresi olarak siteadi.com/rss.gif gibi kesin adresleme kullanın. Koddaki tek tırnakları (') düz hale getirmeyi unutmayın.

  11. cumasi dedi ki:

    Hocam localde farklı sitemde deneme farklı oluyormuş..
    http://tinypaste.com/13206

    rss.png image yide kullandığım temadan alıp ftp den ana dizindeki images klasörüne attım..

    8 nolu mesajınızdaki verdiğiniz fonksiyonu localde denedim fakat mevcut görüntüden daha iyi olmadı o yüzden hiç değişiklik yapmadım..

  12. oguzhan dedi ki:

    Yakup Bey Merhaba,

    Elimde bir tema var ve oluşturduğum ketegorilere tıkladığımda caloop.php içinde ayarlanmış sabit bir ketegorinin yazıları cıkıyor. Ve altında benzer başlıklar benzeri son yazılan yazıları yine manuel elle eklenmıs sabit bir kategori ID si ile gosteriyor. Ben ise o kategoride hangi yazılar varsa onları göstermek istiyorum. Başka bir temadan alıyorum fakat çalışmıyor. Yardım edebilirmisiniz. Seçim yapılan kategoriye ait konu başlıklarını listeleyebileceğim bir php kodu verirmisiniz. Şimdiden tşkler.

  13. Yakup Gövler dedi ki:

    Varsayılan tema içerisindeki archive.php dosyasında bu kodlar bulunmaktadır. Oradan bulabilirsiniz.

  14. sinem dedi ki:

    bu siteyi inceleyin derim mutlaka...

    ben bu siteyi daha faydalı buldum yani daha gelişmiş, ama yazınız sayesinde böyle servislerden haberim oldu teşekkürler...

    http://www.copytaste.com/d46463d