WordPress 2.7 versiyonu ile eklenen bir özellik olan ‘Threaded Comments’, WordPress Türkiye Ekibi’nin çevirisi ile: ‘Kademeli Yorumlar’ özelliği; yazınıza yapılan yorumların herhangi birisine tekrar cevap verildiğinde, verilen cevabı ilgili yorumun hemen altına ekleyen bir eklenti veya uygulamadır. Bu özellik sayesinde alıntı eklentilerini kullanmaktan veya ‘@’ ile cevap vereceğimiz kişiye seslenme zahmetlerinden ciddi bir şekilde kurtuluyoruz. Hem de blogumuza görsel açıdan son derece hoş bir görünüm ve düzen sağlıyor.
Threaded Comments özelliği WordPress’in default teması olan Twentyeleven teması tarafından desteklenmektedir (Resim 1). Fakat Twentyten teması bu özelliği desteklememektedir. Sanıyorum çoğu WordPress Teması halen desteklememekte. Bu özelliğin kullanımı ile ilgili WordPress Codex sayfasında da çok detaylı bir bilgi ben bulamadım. Türkçe kaynak da bulamadım. Hatta ve hatta ‘tam’ anlamıyla açıklayan bir ingilizce kaynak da bulamadım. Farklı kaynaklardan topladığım bilgilerle size Threaded Comments özelliğinin, kendi tasarladığınız temalara nasıl uygulayacağınızı anlatmaya çalışacağım.

Resim 1: WordPress Twentyeleven temasındaki Threaded Comments özelliği.
Uygulama Adımları :
- Threaded Comments özelliğini kullanacağınız şekilde yorumlar alanınızın Html ve Css kodlamasını bitirmek.
- Dashboard üzerinden Threaded Comments Özelliğini aktif hale getirip, seviyesini belirlemek.
- ‘comment-reply’ Scriptini header.php dosyasına import etmek.
- Daha önceden hazırlamış olduğumuz comments.php dosyasında gerekli değişiklikleri yapmak.
- functions.php dosyasına gerekli fonksiyonu yazmak.
Dikkat Edilecek Noktalar :
- Her bir yorumun ve yorum yapma formunun bulunduğu alan sabit bir genişlik değerine sahip olmayacak. Yani % hesabıyla çalışmalısınız çünkü alt kademeye geçtikce yorum alanı daralacak. (Tabi siz bambaşka bir tasarım düşünüyorsanız orası size kalmış.)
- Yorumun tasarımını tamamen kapsayacak bir kapsül içine almalısınız (div, li… gibi en dışarıda bir kapsül ile yorum alanı toplanmış olmalı.)
İlk adımı bitirip Html ve CSS kodlamanızı bitirdiyseniz uygulamaya başlıyalım;
Threaded Comments Özelliğini Aktif Hale Getirmek :
Admin Paneli (wp-admin) / Ayarlar / Tartışma / Kademeli yorumlara ’5′ seviyesine kadar izin ver.
Seçeneğini içaretleyin, seviyeyi kafanıza göre belirleyin ve kaydedin.
‘comment-reply’ Script’ini Import Etmek :
header.php dosyasını açın ve aşağıdaki kodu bulun;
<?php wp_head(); ?>
Ve üst kısmına aşağıdaki kodları ekleyin;
<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' );?>
Bu kod Tekil Yazılar açıldığında bu Script’i aktif hale getirecek. Siz bu yorumları Özel Sayfalarda da yani page.php formatının açıldığı sayfalarda da aktif hale getirmek istiyorsanız;
<?php if ( is_singular() or is_page() ) wp_enqueue_script( 'comment-reply' );?>
Kodunu kullanın… Tüm sayfalarda aktif olsun isterseniz de;
<?php wp_enqueue_script( 'comment-reply' ); ?>
Kodunu kullanın.
‘comments.php’ Dosyasını Düzenlemek :
comments.php dosyasında, yorumları aşağıdaki fonksiyonu kullanarak çekeceğiz. Bunun dışında hazırladığınız bir yorum şablonu ya da fonksiyonu varsa onu kullanamazsınız. Ama o tarzı yine 4. aşamada hazırlayacağımız fonksiyonda uygulayabilirsiniz… Aşağıdaki kodu comments.php’de uygun yere ekleyelim;
<ol class="commentlist">
<?php wp_list_comments( array( 'callback' => 'yorum_fonksiyonunun_adi' ) ); ?>
</ol>Bu fonksiyonun ol tagleri arasında olmasına dikkat edelim. Yoksa sonuç başarılı olmayacaktır… Fonksiyonun içindeki arrayde kullandığımız callback son aşamada functions.php dosyasına yazacağımız yorum fonksiyonunun ismidir. O kısmı düzenlemeyi unutmayın.
wp_list_comments() fonksiyonunun parametreleri ve özelliklerini buradan inceleyebilirsiniz.
Yorum yapma formunu da yine kendi kafamıza göre yazamıyoruz. Bunun için aşağıdaki fonksiyonu kullanacağız. Aşağıdaki kodları, yukarıdaki kodu eklediğiniz yerin altında olacak şekilde uygun yeri bulup ekleyin ve devam edelim;
<?php comment_form(); ?>
comment_form() Fonksiyonu normalde bu haliyle wordpress’in varsayılan yorum formu stilini kullanarak ekler. Fakat bu fonksiyon parametre olarak yine çok yerinde array’ler alıyor ve bu sayede istediğiniz tarzı verebilirsiniz. Bunun için buradaki açıklamaları kullanarak işinizi halledebilirsiniz.
‘functions.php’ Dosyasını Düzenlemek :
İlk olarak functions.php dosyasına aşağıdaki kodları eklemekle başlayalım.
<?php function yorum_fonksiyonunun_adi( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> <article id="comment-<?php comment_ID(); ?>" class="comment"> //Buraya tasatımını yaptığınız yorum kapsülünün kodları gelecek. </article> } ?>
Burada comments.php dosyasında çağırdığımız fonksiyonu tanımladık. comments.php dosyasındaki wp_list_comments() fonksiyonu, bu fonksiyondaki şablon kullanılarak veritabanından yorumları alıp tek tek sıralayacak. Dikkat ettiyseniz li tagini kapatmadık. Çünkü bu fonksiyon li tagini kendisi kapatıyor. Sıralarken ise Resim 2′deki gibi bir listeleme uygulayacak.

Resim 2: Yorumların listelenme şekli.
Sistemin işleyişi bu şekilde… Yorum alanı kapsülünü hazırlarken buradaki fonksiyon örneğindeki kodları kullanabilirsiniz.
Yorum alanına cevaplama linkini eklemek için de aşağıdaki kodu kullanacaksınız;
<?php comment_reply_link( array_merge( $args, array( 'reply-text'=> 'Cevapla', 'depth' => $depth, 'max_depth' => $args['max_depth'] ))); ?>
Bu koddaki $args['max_depth'] kısmı, makalenin başında admin panelinden ayarladığımız kademeli yorum seviyesidir. comment_reply_link() fonksiyonunu buradan daha detaylı inceleyebilirsiniz.
Cevapla linkine tıklandığında yorum formu article taglerinin hemen bitişine yerleşecektir. Tasarımınızı yine buna göre ayarlamanız gerekmektedir.
Kaynaklar








facebook.com/adogan
gplus.to/adogan
friendfeed.com/adogan
twitter.com/a_dogan
Çok kaliteli bir yazı , geçerli .
emeğine sağlık
Bende kademeli yorum çalışıyordu fakat bir sorun vardı. Bu yazı sayesinde hallettim. :)
Faydası olmasına sevindim :) Karşılaştığınız sorunu ve çözümünü de paylaşırsanız sizin karşılaştığınız sorunla karşılaşan başka kullanıcılara da yardımcı olmuş olursunuz aslında ;)
Cevapla linkine bastığımda sayfayı yenileyip cevaplama kısmı çıkıyordu. Fakat headere <?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' );?> bu kodu ekleyince aynı sayfa içinde açıldı.
teşekkürler kardeşim
Tema yapımcıları için güzel bir konu. Teşekkürler.
Teşekkürler şu anki temam destekliyor ama yinede not alınması gereken bir konu