8
2013
Ana Sayfada Yazıların Yorumlarını Göstermek
WordPress'te yorum sistemi önemli bir özellik. Yazılara ait yorumlar normalde ana sayfada ya da arşiv sayfalarında gösterilemezler. Ancak bazı özel temalarda ana sayfada her yazı için o yazıya yapılmış son 2-3 yorumu göstermek siteye artı bir değer katabilir. Özellikle moda, mobilya ya da benzeri ürün tanıtım sitelerinde, ana sayfada yazıları iki sütunlu olarak gösteren sitelerde, kullanıcı yorumlarından 2-3 tanesini göstermek, ürün tanıtımları açısından iyi olabilir.
Tekil yazı gösterimlerinde yorumları listelemek için wp_list_comments() fonksiyonu kullanılır. Ancak ana sayfada bu fonksiyon bir sonuç üretmeyecektir. Bu fonksiyonun içeriğini incelendiğimde get_comments() adında, ID'si bilinen bir yazının yorumlarını istediğimiz şekilde almamızı sağlayan bir fonksiyonla karşılaştım. Ardından aşağıdaki fonksiyonu oluşturdum. Fonksiyon kodlarını temanızın functions.php dosyasına ekleyin.
function yakuphoca_yazinin_yorumlarini_goster() { global $post; $parametreler = array( 'number' => '3', //Son 3 yorumu getir 'status' => 'approve', 'post_id' => $post->ID ); $comments = get_comments($parametreler); if ( $comments ){ echo '<ul class="home-comments-list">'; foreach($comments as $comment) { ?> <li> <div class="home-author-avatar"> <?php echo get_avatar( $comment, 30 ); ?> </div> <div class="home-comment-content"> <strong><?php echo esc_attr($comment->comment_author);?>: </strong> <?php $comment_content = strip_tags($comment->comment_content); if (mb_strlen($comment_content) > 60) { //Yorumun ilk 60 karakterini al echo mb_substr($comment_content, 0, 60, 'UTF-8') . '...'; }else{ echo $comment_content; } ?> </div> </li> <?php } echo '</ul>'; } }
Fonksiyonu kullanmak için en uygun yer, temanızın index.php dosyasındaki the_content(), eğer bu yoksa the_excerpt() fonksiyonunun çağrıldığı satırın hemen altı olacaktır. Fonksiyonu çağırmak için sadece aşağıdaki kodu yazmanız yeterli olacaktır.
<?php yakuphoca_yazinin_yorumlarini_goster(); ?>
Böylece ana sayfada gösterilen her yazının altında o yazı için yapılmış son 3 yorum, yorumcunun Avatarı ile birlikte listelenecektir. Fonksiyon sitenizin sorgu sayısını, ana sayfada gösterilen yazı sayısı kadar artıracaktır, yani 6 yazı gösteriyorsanız, fonksiyon toplamda 6 kere çağrılacağı için sorgu sayınızı 6 artıracaktır. Sorgu sayısı sizin için önemli ise bunu dikkate alın. Listeyi biçimlendirmek için herhangi bir biçimlendirme önermiyorum, siz aşağıdaki sınıfları kullanarak listeyi kendi temanıza göre biçimlendiriniz.
/* yorum listesi ul etiketini biçimlendirir */ .home-comments-list { } /* yorum listesi li etiketini biçimlendir */ .home-comments-list li { } /* avatar resmini biçimlendir */ .home-comments-list li .home-author-avatar{ } /* yorumcu ve yorumunu biçimlendir */ .home-comments-list li .home-comment-content { }
Eğer uygun CSS kodları ile listeyi biçimlendirirseniz, yorumları aşağıdaki resimde ok ile gösterilen bölgedeki gibi gösterebilirsiniz.

teşekkürler hocam
lokalde denedim ama
if (mb_strlen($comment_content)) > 60) { //Yorumun ilk 60 karakterini al
kodları "Parse error: syntax error, unexpected '>'" hatası veriyor
Kusura bakmayın orada bir tane parantezi fazladan eklemişim sanırım son dakikada yaptığım bir düzenleme sonucunda olmuş. Kodu yeniden düzenledim, kullanmak isterseniz yeniden kopyalayın.
teşekkürler hocam
hırs yaptım farklı şekilde çözdüm sihirli kelime "pinboard" :D
ama biraz karmaşaya yol açıyor :) görünüm için uğraşmak lazım css şart :)
iyi çalışmalar
twentythirteen temasında functions dosyasına eklerken sürekli hata veriyor malesef kodlar.
Kodları localde denedim, herhangi bir problem olmadan çalışmıştı.
WordPress'in varsayılan temaları, normal temalardan farklı olarak tema dosyalarını parçalara ayırmıştır. Fonksiyonu ekledikten sonra hata almıyorsanız, çağırırken kullandığınız kodun, temada LOOP döngüsü içerisinde çağrıldığından emin olun. Bunun dışında, mb_substr gibi fonksiyonlarla ilgili hata alıyorsanız, belki bu fonksiyonlar sunucunuzda etkinleştirilmemiş olabilir.
Eğer bunlar çözüm olmazsa, hata mesajını/mesajlarını yazın, ona göre bir inceleyeyim.