Wordpress’te Trackback/Pingback’leri yorumlardan ayırmak
Wordpress kullanan blogcular için trackback ve yorumların alt alta sıralanması bazen sorun yaratabiliyor. Bu yüzden yorumlarla, trackback’leri ayırmanın yöntemlerini araştırmaya başladım.
Bu işlem birkaç şekilde yapılabilmesine karşı anlattığım yöntem diğerlerine göre daha düzgün çalışıyor ve Wordpress hakkında da birşeyler daha öğrenmiş oluyoruz.
Diğer yöntemde işi comments.php dosyasında bitiriyoruz. Yani comments.php içine trackback ile yorumların ayrı yerlerde gösterilmesi için iki koşul yazıyoruz. Yöntem çok kolay gibi görünse de Toplamda olan yorumu trackback’lerden çıkarmıyor ve bize tam bir serbestlik sağlamıyor.
Bu yüzden biraz daha uğraşıp işin içine functions.php yi de ekleyip hem sisteme yüklenmiyor, hemde yorumları istediğimiz yapıya sokuyoruz.
Başlamadan önce bu işlemi yapmak için Wordpress teması yapmayı bilecek bilgiye sahip olmanız gerekebileceğini söylemeliyim. Eğer anlatacaklarım hakkında en ufak bir fikriniz yoksa bu işe kalkışmayın veya sitenizle ilgili herşeyin yedeğini alın.
Trackback/Pingback’leri yorumlardan ayırmak
Anlatacağım yaklaşımda tema dizininiz içinde bir comments.php dosyası ve functions.php dosyası bulunmalı. comments.php olmadan yorumlar hiç görünmeyeceği için bunun olduğunu varsayıyorum. eğer yoksa functions.php yi ise kendiniz oluşturun.
Functions.php’yi düzenleyelim
Bir Wordpress tema tasarımcısı için functions.php dosyası çok önemli ve gereklidir. Bu dosya içinde oluşturduğumuz kodlar temanın içinde çalışır ve işimizi kolaylaştırır, bir eklenti gibide çalıştığı için bize esnek bir oyun alanı sağlar. Böylece istediğimiz özellikleri temamıza ekleyebiliriz.
Biz burada 4 fonksiyon ve 2 filtre oluşturacağız. Bu oluşturduklarımızda istediğimizi elde etmemizi sağlayacak. Aşağıdaki tabloda da bunların neler olduğunu görebilirsiniz.

- filterPostComments: Yorum sayacını trackbackleri saymayacak şekilde düzenleyecek
- filterComments: Global değişkenler yardımıyla trackbackleri yorumlardan ayıracak
- stripTrackback: Trackbackleri array şeklinde ayıracak
- stripComment: Yorumları array şeklinde ayıracak
- comments_array: basitçe anlatmak gerekirse the_comments array’i
- the_posts: Bütün yazılarda bulunan post array’i
Bu kadar açıklama yeter şimdi functions.php dosyasına aşağıdaki kodları yazalım.
add_filter(’comments_array’, ‘filterComments’, 0);
add_filter(’the_posts’, ‘filterPostComments’, 0);
function filterPostComments($posts) {
foreach ($posts as $key => $p) {
if ($p->comment_count <= 0) {
return $posts;
}
$comments = get_approved_comments((int)$p->ID);
$comments = array_filter($comments, “stripTrackback”);
$posts[$key]->comment_count = sizeof($comments);
}
return $posts;
}
function filterComments($comms) {
global $comments, $trackbacks;
$comments = array_filter($comms,”stripTrackback”);
$trackbacks = array_filter($comms, “stripComment”); return $comments;
}
function stripTrackback($var) {
if ($var->comment_type == ‘trackback’ || $var->comment_type == ‘pingback’) {
return false;
}
return true;
}
function stripComment($var) {
if ($var->comment_type != ‘trackback’ && $var->comment_type != ‘pingback’) {
return false;
}
return true;
}
add_filter(’comments_array’, ‘filterComments’, 0);add_filter(’the_posts’, ‘filterPostComments’, 0);function filterPostComments($posts) {foreach ($posts as $key => $p) {if ($p->comment_count <= 0) {return $posts;}$comments = get_approved_comments((int)$p->ID);$comments = array_filter($comments, “stripTrackback”);$posts[$key]->comment_count = sizeof($comments);}return $posts;}function filterComments($comms) {global $comments, $trackbacks;$comments = array_filter($comms,”stripTrackback”);$trackbacks = array_filter($comms, “stripComment”); return $comments;}function stripTrackback($var) {if ($var->comment_type == ‘trackback’ || $var->comment_type == ‘pingback’) {return false;}return true;}function stripComment($var) {if ($var->comment_type != ‘trackback’ && $var->comment_type != ‘pingback’) {return false;}return true;}
Nasıl çalıştığını tam olarak anlamaya ihtiyacımız yok ama php biliyorsanız zaten ne olup bittiğini az çok anlamışsınızdır. Şimdi sıra bir sonraki aşamada…
Comments.php’yi düzenleyelim
Diğer ayrım derslerinin aksine biz comments döngüsünü düzenlemeyeceğiz. Onun yerine bir “trackbacks” global değişkeni yaratıp, comments döngüsünün altına trackbacks döngüsünü ekleyeceğiz.

Yukarıdaki tabloda gördüğünüz gibi Comments döngüsünün hemen sonuna aşağıdaki kodları yazın.
<?php global $trackbacks; ?>
<?php if ($trackbacks) : ?>
<?php $comments = $trackbacks; ?>
<h3 id=”trackbacks”><?php echo sizeof($trackbacks); ?> Trackbacks/Pingbacks</h3>
<ol class=”commentlist”>
<?php foreach ($comments as $comment) : ?>
<!– trackback HTML girdiniz –>
<?php endforeach; ?>
</ol>
<?php endif; ?>
Eğer herşey doğru yapılmışsa kod çalışıyor olmalı. Yaptıklarımızın örneğini indirip incelemek için Buraya Tıklayınız. İlgili konu hakkındaki ingilizce kaynak için http://weblogtoolscollection.com/archives/2008/03/08/managing-trackbacks-and-pingbacks-in-your-wordpress-theme/ linkine gözatabilirsiniz.
Benzer Yazılar
Şu anda okuduğunuz konuyu beğenmişseniz, aşağıdaki konularda ilginizi çekebilir.
- Jquery’de Sekmeler
- Galleria – JQuery Resim Galerisi
- CSS Sprite Tekniği Nedir? Bu teknik nasıl uygulanır? Oval köşeler nasıl yapılır?
- Wordpress’te Sürüm Yükseltme
- WP Post Thumbnail Eklentisi
- Wordpress'i Hızlandırmanın Yolları
- İlham Kaynağı: Tasarım için Fikirler
- Global Proje Üretememek
- Wordpress Blog’unuzu Optimize etmenin ve hızlandırmanın yolları
- Web Tasarım: Kolay okunabilen içerikler yazmak






