WordPress:如何将留言和 Trackback/Pingback 区分开来
我们知道,在WordPress的留言系统里,访客留言、pingback以及trackback是混在一起的,如果一篇热门文章的留言和引用都非常的多,这样势必造成留言板块过于沉长,既不利于阅读也不美观。如果把pingback以及trackback从留言中抽离出来,单独列表,访客就能更容易阅读文章的留言了。
话不说多,具体做法请看下面步骤,
注意操作前先备份原来文件:
(一)修改你的主题内的functions.php文件(如果没有该文件就自己新建一个即可),加上如下代码:
<?php
function get_ping_type($trackbacktxt = 'Trackback', $pingbacktxt = 'Pingback') {
$type = get_comment_type();
switch( $type ) {
case 'trackback' :
return $trackbacktxt;
break;
case 'pingback' :
return $pingbacktxt;
break;
}
return false;
}
?>
(二)修改你的主题内的comments.php文件:
第一步:
查找这一句:
<ol>
在它的上面添加以下语句:
<?php /* Seperate comments and pings */
if ( $post->comment_count > 0 ) {
$countComments = 0;
$countPings = 0;
$comment_list = array();
$ping_list = array();
foreach ($comments as $comment) {
if ( 'comment' == get_comment_type() ) {
$comment_list[++$countComments] = $comment;
} else {
$ping_list[++$countPings] = $comment;
}
}
}
?>
<?php /* Check for comments */ if ( $countComments > 0 ) { ?>
接着在它的下面有以下一句:
<?php foreach ($comments as $comment) : ?>
把它替换为:
<?php foreach ($comment_list as $comment_index => $comment) { ?>
第二步:
文件内查找: </ol> 这一个标记,这与上面第一步查找的语句形成封闭。
在
</ol> 的
上面查找下面一句:
<?php endforeach; /* end for each comment */ ?>
把它替换为:
<?php } /* End foreach comment */ ?>
第三步:
接着在
</ol> 的
下面添加一段:
<?php } /* end comment check */ ?>
<?php /* Check for Pings */ if ( $countPings > 0 ) { ?>
<h4>Trackbacks/Pingbacks</h4>
<ol>
<?php foreach ($ping_list as $ping_index => $comment) { ?>
<li>
<?php comment_author_link() ?> »
<?php if ($comment->comment_approved == '0') : ?>
<em>你的留言正在等待审核,谢谢。</em>
<?php endif; ?>
<?php printf('<span>' . get_ping_type(__('Trackback'), __('Pingback')) . '</span>')?> on <?php comment_date('Y/m/d') ?> <?php comment_time() ?>
<!--如果你要显示pingback以及trackback的内容,请在这里加入-->
</li>
<?php } /* end foreach ping */ ?>
</ol> <!-- END #pinglist -->
<?php } /* end ping check */ ?>
然后就OK啦,具体效果可以参照本站留言板块。