2009.02 04

显示WordPress评论/Trackback/Pingback数目

有时候,我们可能在某个地方显示评论/Trackback/Pingback的数目。如果说,这些都没有区分开来。那么我们可以用简单的方法来完成,如下:

1. 显示所有评论(包括Trackback/Pingback)的数目

  • 打来comments.php找到下面这一行:

    <?php foreach ($comments as $comment) : ?>

  • 将其修改成:

    <?php $i = 0; ?>
    <?php foreach ($comments as $comment) : ?>
    <?php $i++; ?>

  • 这时,你就可以在这个评论的循环中加往下面的代码来显示评论的数目:

    <?php echo $i; ?>

2. 分别显示评论/Trackback/Pingback的数目

不过。当需要区分评论/Trackback/Pingback的数目时,第1点所提到的方法就不再适应。因此,我们添加一个filter来区分他们,以达到我们区分显示的目的。方法如下:

  • 在functions.php中加入如下代码:

    /**
    * 显示Trackback, pingback, comment, pings的数目,使用:
    * fb_comment_type_count('ping');
    * fb_comment_type_count('comment');
    */
    if ( !function_exists('fb_comment_type_count') ) {
    function fb_get_comment_type_count($type='all', $post_id = 0) {
    global $cjd_comment_count_cache, $id, $post;
    if ( !$post_id )
    $post_id = $post->ID;
    if ( !$post_id )
    return;
    if ( !isset($cjd_comment_count_cache[$post_id]) ) {
    $p = get_post($post_id);
    $p = array($p);
    update_comment_type_cache($p);
    }
    if ( $type == 'pingback' || $type == 'trackback' || $type == 'comment' )
    return $cjd_comment_count_cache[$post_id][$type];
    elseif ( $type == 'pings' )
    return $cjd_comment_count_cache[$post_id]['pingback'] +
    $cjd_comment_count_cache[$post_id]['trackback'];
    else
    return array_sum((array) $cjd_comment_count_cache[$post_id]);
    }
    // comment, trackback, pingback, pings
    function fb_comment_type_count($type = 'all', $post_id = 0) {
    echo fb_get_comment_type_count($type, $post_id);
    }
    }

  • 当functions.php中的function成功启用的话,显示这三者的数目的方法如下:

    if ( function_exists('wp_list_comments') ) {
    // WP 2.7 评论循环
    if ( have_comments() ) { ?>
    <?php if ( empty($comments_by_type['comment']) ) { ?>
    <h2 id="comments"><?php comments_number('Keine Kommentare', 'Ein Kommentar', '% Kommentare' );?></h2>
    <ol class="commentlist">
    <?php wp_list_comments('type=comment&callback=fb_theme_comment'); ?>
    </ol>
    <?php } ?>
    <?php if ( function_exists( 'fb_comment_type_count' ) ) {
    if ( empty($comments_by_type['pingback']) ) { ?>
    <h2 id="pingback"><?php fb_comment_type_count('pingback'); ?> Trackbacks/Pingbacks</h2>
    <ol class="pingbacklist">
    <?php wp_list_comments('type=pingback'); ?>
    </ol>
    <?php } ?>
    <?php if ( empty($comments_by_type['trackback']) ) { ?>
    <h2 id="trackback"><?php fb_comment_type_count('trackback'); ?> Trackbacks/Pingbacks</h2>
    <ol class="trackbacklist">
    <?php wp_list_comments('type=trackback'); ?>
    </ol>
    <?php }
    } ?>
    <?php } else {
    // 这里放入没有评论时显示的内容
    } ?>

参考: How to: Number your comments / Numbering your comments, pingbacks, trackbacks or all

23

  1. 2009.02.04 1:01 am
    Elton Disney(visit): [回复]

    据说这是沙发??

  2. 2009.02.04 1:02 am
    Elton Disney(visit): [回复]

    好复杂,那些代码基本都看不懂什么意思~
    做完板凳走人了

  3. 2009.02.04 1:04 am
    fisio(visit): [回复]

    前排就座

  4. 2009.02.04 1:18 am
    toydime(visit): [回复]

    睡的挺晚,来的蛮早,楼上的早些休息耶!!!

  5. 2009.02.04 2:45 am
    welee(visit): [回复]

    哈哈,这篇对我太有用了,珍藏!!

  6. 2009.02.04 9:06 am
    骷髅小鬼(visit): [回复]

    很受用,总是分不清Trackback和Pingback,去查查

  7. 2009.02.04 9:07 am
    Leeiio(visit): [回复]

    本來評論就少,暫時是沒用對我來說哈…

  8. 2009.02.04 4:21 pm
    爱月(visit): [回复]

    呃~博客还是简单一点比较好吧?~

  9. 2009.02.04 6:57 pm
    会律博客(visit): [回复]

    要在这做上SF是很困难的,代码就忽略不计啦!

  10. 2009.02.04 7:59 pm
    kerby(visit): [回复]

    前排就座,其实我只要能区分显示评论和pingback就行了,至于数目,那个我无所谓

  11. 2009.02.04 10:24 pm
    xiaorsz(visit): [回复]

    我比较关心今天聚会的情况,哈哈!!

  12. 2009.02.04 10:25 pm
    leehow这个VIP(visit): [回复]

    毁了,毁了。

  13. 2009.02.04 11:35 pm
    domate(visit): [回复]

    @xiaorsz:我也以为他会捎带着讲一下,并发几张图片上来呢。

  14. 2009.02.06 2:58 pm
    BoBoSkY不是(visit): [回复]

    这个不错啊!!收藏之

  15. 2009.02.07 8:02 pm
    Jun(visit): [回复]

    占个前排,写得不错,收藏了

  16. 2009.02.08 1:02 pm
    吖Bee(visit): [回复]

    对于Wordpress模板那些函数还有待学习…..但又没有时间….是啦,你用的是什么字体?(英文那些)

  17. 2009.02.11 1:23 am
    eddie yang(visit): [回复]

    2.7已经把comment Loop藏起来了,ol里面只剩下一句.

  18. 2009.02.11 1:24 am
    eddie yang(visit): [回复]

    @吖Bee:英文是Georgia,斜体(italic)也很好看喔

  19. 2009.02.11 3:01 pm
    WordPress啦!(visit): [回复]

    应该有相关插件吧

  20. 2009.03.09 4:18 pm
    flyblog(visit): [回复]

    这个我以前也这么做的

  21. 2009.03.24 1:51 pm
    老时(visit): [回复]

    有着插件吗

  22. 2009.05.12 8:01 pm
    歪歪屋啊(visit): [回复]

    郁闷,一般主题都自带的啊,还用得着这样啊

  23. 2009.05.15 1:55 pm
    阿修(visit): [回复]

    @歪歪屋啊:谁说的,我的主题就没带……而且wp_list_comments以前版本是没有的。还是要多学学的

Additional comments powered by BackType