WordPress在文章列表中显示评论

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

需求说明:
我想在首页每篇日志下像文章页single那样显示评论,<?php comments_template(); ?>直接放首页没有反应的。有谁知道怎么办教教我 谢谢!

解决方案:
在WordPress主题的index.php文件的文章调用循环内,即 while (have_posts()) : the_post(); 和 endwhile; 之间适当位置,添加以下代码:

<?php
    global $withcomments;
    $withcomments = true;

    // 包含评论模板文件,
    comments_template("/inline-comments.php");
?>

实现原理很简单,我在以上代码的第2行声明我将使用全局变量$withcomments,并将其值改成true。接着第6行包含用于在首页显示评论的模板inline-comments.php,为什么不使用默认的评论模板comments.php呢?其实不管什么东西都有其适用范围,一般WordPress主题中的comments.php都是专门为文章single和页面page定制的,如果把它硬套到主页上,似乎会觉得很别扭,如果你想在首页显示各文章的评论,就给首页定制个显示评论的模板吧!如想使用默认评论模板comments.php,第6行改成comments_template();

以上方法可以推广到分类页、标签页、日期归档页等文章列表页!

 

如果想了解更多,请进一步阅读WordPress文档:
The Comments Template
WordPress tip: Include comments in post lists

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-include-comments-in-post-lists.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

69 条留言

点此留言
1 2 62
  1. hongwang777 hongwang777

    博主好!
    我需要一个显示所有文章评论的页面即可。本来想改动meta的评论RSS数目(一般空间为10-100)。一时也找不到可以修改的地方。我确实看到有这样的页面,甚至可以按照月份来显示,就如同文章索引差不多。如果有可能请帮助我,谢谢!

    • Ludou

      @hongwang777 请关注本博客的文章,最迟明晚之前给你回复。

      • 感恩

        @Ludou 速度这么快,谢谢了,辛苦了!

  2. 午夜客 午夜客

    不错。

  3. 沉寂号 沉寂号

    我也一直关注这个问题很久了,虽然上面叙述的可以实现文章后面出现评论内容
    不过连评论框都出来了,这样让页面显示的很不满意
    最终的理想结果是:
    像门户网站评论内容一样,在每篇文章标题后面 添加规定字数的评论内容,而不是全部评论内容都出来。

    • Ludou

      @沉寂号 那你自己修改以下首页的评论模板就可以了

      • abc

        @Ludou 怎么修改评论模板呢?我已经把comment复制了。该改的全改了,很难只纯粹提取最后一条评论,而且是按字数截取,大拿能否详细告知?考虑我等菜鸟的接受能力。
        另外,现在所有文章下的评论显示出来的都是第一篇文章的评论。没有按每篇文章单独的评论来处理。

        • Ludou

          @abc $comments = get_comments('order=ASC&count=1&post_id=' . $post->ID);
          echo mb_strimwidth($comment->comment_content, 0, 34, '..', 'utf-8');
          // 34是字数

          • abc

            @Ludou 谢谢!我现在的博客可以显示最后一条评论了。博主有机会是否研究下,如何显示同意人数最多的评论(插件),哈哈,得寸进尺了。

          • Ludou

            @abc comment digg 插件

  4. eva eva

    我自己的博客别人评论过的,一般都是隐藏的,我要自己点击展开才能看的到,怎么样默认让他显示出来的呢?

    • Ludou

      @eva 不同主题的功能不一样,我没法给你提供解决方法。

  5. izdengin izdengin

    博主你好!
    我的博客中人家评论后的“回复”那个字不见了,我怎么样才能把它显示?有空帮我,等你回复!谢谢~!

    • Ludou

      @izdengin 很抱歉,我不了解你的博客情况,也不懂你博客的文字。
      你可以回忆一下之前做了哪些更改,然后恢复过去试试。

      • izdengin izdengin

        @Ludou 之前是很好的, 不知什么原因博客搬家后就不见了…
        虽然博客的文字不同,但是主题结构是一样的, 博客系统是Wordpress3.0.5版, 主题是checkerize主题… 没有什么特别的地方…

        • Ludou

          @izdengin 这个你自己找原因吧,有可能是某些插件被禁用了

          • izdengin izdengin

            @Ludou 谢谢,终于变回来了….
            原来我禁用了一个插件….

  6. 策马啸西风 策马啸西风

    很需要这篇文章的内容,谢谢提供!

  7. 超声波 超声波

    呵呵..不好意思..边这个都写错了..最近在学Wordpress建博客,基础太差了,学得好慢,谢谢分享..

  8. aa

    测试下头像

  9. jason

    感谢你提供的方法,但还有个问题,怎么控制显示的条数啊,我是用
    <?php wp_list_comments('type=comment&callback=iphoto_comment&per_page=9999&max_depth=1000'); ?>
    来调用的。

  10. cmxcf5 cmxcf5

    博主能放出现在www.soword.com的主题吗? 很喜欢喔!~

  11. 张帅

    显示某篇日志或页面的所有评论
    wp_list_comments( array( 'callback' => 'twentyten_comment' )
    我现在自己的主题 wp_list_comments( array( 'callback' => 'xxx_comment' )
    得需要改什么地方呢??
    得怎么才能获取所有评论呢?求助啊!!!

    • Ludou

      @张帅 wp_list_comments( array( 'callback' => 'xxx_comment' )
      本身就是列出所有评论的意思。如果要改每条评论的HTML形式,可以在functions.php中修改
      函数xxx_comment()

      • 张帅

        @Ludou 这个我知道,感谢您的帮助。
        我就是找不到他们是怎么关联起来的……

  12. 小达 小达

    博主你好,我想问下怎么在文章标题下显示多少人来过,多少人在在篇文章下评论几条?谢谢!

    • Ludou

      @小达 1、评论数可以参考这篇文章 4、显示评论数:
      https://www.ludou.org/create-wordpress-themes-single.html

      2、点击量用插件WP-PostViews,具体使用方法上网找

  13. 千里博客 千里博客

    太感谢了,这篇文章实在是太有用了!
    现在有个问题请教一下。我的首页文章部份,分成了两块。现在文章下面的评论框可以正常显示了。但是当前文章的评论,我不想显示在评论框上面,而是显示在文章旁边。。。(不是边栏),不知道有没有单独调用当前文章评论的标签?谢谢!

    • Ludou

      @千里博客 wp_list_comments()

      • 千里博客 千里博客

        @Ludou 这个好像不行。可能是我没有表达清楚。我画了个示意图,你看一下
        http://www.1000km.net/test.jpg

        谢谢!
        现在正在你博客上翻箱倒柜呢。。。从头到尾。一篇一篇的看。。还要记录。。嘿嘿。
        全是些实用的东西。。太感谢了!

        • Ludou

          @千里博客 这个得配合css,具体代码我不清楚,不同主题也不一样,你在自己搞搞吧。

  14. yalon yalon

    如何在列表页面每篇文章只显示文章第一条评论!

  15. 颜色 颜色

    感谢楼主,可以实现,但是问题是调用了全部评论。要怎么才可以设置只调用当前文章的?

    • Ludou

      @颜色 可以使用get_comments函数,传递具体的文章id即可:
      http://codex.wordpress.org/Function_Reference/get_comments

  16. 世风 世风

    很有用的文章,多谢。
    现在发现一个问题,就是按照文章中提供的方法,可以在文章列表页面实现评论功能。
    启用多说插件后,文章列表页面无法使用多说评论功能,只使用主题自带的默认评论样式,但是单篇文章(single.php)中可正常使用多说评论功能,特请求大师协助,谢谢。

  17. abc

    楼主强大!按照你的方式,果然调出了回复。
    但是,有几个问题:
    1、如果随便写一个不存在的PHP模板文件,则还可以正常显示该文章下的评论,但是,如果把comments复制一个comments2.php,则显示评论失败,还是评论窗口,但是显示到不知道哪个版块的评论去了,比较让人困惑;
    2、如何仅用文本形式在文章摘要下显示最后一条评论的摘要?这个比较难,谢谢楼主。楼主好人啊~ 在日理万机之外给我解答解答吧。谢谢

    • abc

      @abc 楼主啊,我第1条表述有误,重新说一下。现在我把COMMENTS.php 复制为 COMMENTS2.PHP 并修改上传后,有效果了,但是,出现的问题是:文章列表页第一篇文章和最后一篇文章,调用的全是第一篇文章的评论,而且是有头像啊日期啊什么乱七八糟的信息。
      1、我想在文章下只调用特定的一条文章评论(如第二条评论或者末尾评论),应该怎么操作?默认就是沙发评论;
      2、我想各个文章都调用各个文章的某条评论,而不是文章列表页的文章调用的全是第一篇文章同样的评论,应该怎么做?
      感谢楼主放开留言,希望楼主在百忙之中能抽空照顾一下我们菜鸟的问题,感激不尽呀~

    • 落定

      @abc 你的我出现了同样的问题,不知道你的解决了么。。

  18. 匹夫的逆袭 匹夫的逆袭

    楼主,你好!
    以上的方法的确可以推广到分类页, 我的分类评论不是循环这内,我用query_posts调用的循环,采用上述方法以后,我在分类页测试评论,当发表以后,它会自动把评论加到分类目录里面最后一篇文章,不知道这是什么原因呢?

  19. doghap doghap

    找了半天找不到那个inline_comments.php下载地址…

    • Ludou

      @doghap 不同主题的代码不能通用。自己写个代码,或者把comments.php中的代码复制到inline_comments.php,再自己酌情修改。

  20. 好久不贱 好久不贱

    博主能不能实现这个功能,就是像QQ空间个人中心那样的评论,可以伸缩的,你这个我放到博客试了一下,可以倒是可是,但是评论框直接是显示在首页每篇文章底部的,太占页面了,也不好看,不知道能不能弄成类似糗百、快乐麻花、qq空间那样的评论、、、

    • Ludou

      @好久不贱 这个功能需要定制,如果需要我写代码,请到以下网址购买付费服务,购买数量填100:
      http://app.ludou.org/item/work/

      然后给我的邮箱打包发送你主题目录下的index.php和style.css,改完后给你回复。

  21. 浅醉

    Ludou,太感谢你了,解决一个让我头痛的问题

  22. 邪风

    //首页评论样式
    function my_comment_list($comment, $args, $depth) {
    echo '<li '; comment_class(1); echo ' id="comment-'.get_comment_ID().'">';
    //头像
    echo '<div class="c-avatar">';
    echo get_avatar( $comment->comment_author_email, $size = '36' ,$default = get_bloginfo('template_directory') . '/img/default.png');
    echo '</div>';
    //内容
    echo '<div class="c-main" id="div-comment-'.get_comment_ID().'">';
    //昵称
    echo '<div class="c-meta">';
    echo '<span class="c-author">'.get_comment_author_link().'</span>';
    echo '</div>';
    //评论
    echo mb_strimwidth($comment->comment_content, 0, 200, '..', 'utf-8');
    //信息
    echo '<div class="c-meta">';
    echo get_comment_time('Y-m-d H:i '); echo time_ago();
    echo '</div>';
    echo '</div>';
    }

    这样显示的是当前文章的所有评论,怎样写只显示最新一条评论?对php比较无知,请博主指点一下,万分感激

    • Ludou

      @邪风 没办法

    • Ludou

      @邪风 折中的办法是,你进入后台 – 设置 – 讨论, 分页显示评论,每页显示 1 条,在每个页面顶部显示 旧/新 评论

      • 邪风

        @Ludou <?php wp_list_comments('type=comment&callback=my_comment') ?>
        <?php
        //以下是評論式樣, 不含 "回覆". 要用你模板的式樣 copy 覆蓋.

        echo '<li '; comment_class(); echo ' id="comment-'.get_comment_ID().'">';

        //头像
        echo '<div class="c-avatar">';
        echo get_avatar( $comment->comment_author_email, $size = '36' , deel_avatar_default() );
        echo '</div>';
        //内容
        echo '<div class="c-main" id="div-comment-'.get_comment_ID().'">';
        echo comment_text();
        if ($comment->comment_approved == '0'){
        echo '<span class="c-approved">您的评论正在排队审核中,请稍后!</span><br />';
        }
        //信息
        echo '<div class="c-meta">';
        echo '<span class="c-author">'.get_comment_author_link().'</span>'; echo get_comment_time('m-d H:i '); echo time_ago();
        echo '</div>';
        echo '</div>';
        ?>

        我这样可以实现,请问是什么原理? http://www.aizhuiyi.com/

        • Ludou

          @邪风 wp_list_comments没有排序参数,所以没办法获取你所谓的最后一条。
          my_comment不存在,WordPress使用内置的评论结构,也不能达到你要的最后一条

          • 邪风

            @Ludou 问题是,我诡异的成功调用了最后一条,所以我想知道是为什么可以诡异的成功调用最后一条,但是源码中出现了几个 </li><!– #comment-## –> 的代码 我该如何删除这个多出来的代码

          • Ludou

            @邪风 不清楚具体情况

  23. 邪风

    很明显 <?php wp_list_comments('type=comment&callback=my_comment') ?> 这个 my_comment 是不存在的,利用这个错误,却可以实现,我十分费解,想知道这个地方到底如何书写才够正确

    • 邪风

      @邪风 问题是,我诡异的成功调用了最后一条,所以我想知道是为什么可以诡异的成功调用最后一条,但是源码中出现了几个 </li><!– #comment-## –> 的代码

  24. 临沭人 临沭人

    我使用了多说评论,请教如何设置评论显示数量?求解

  25. 落定

    出现abc同样的问题…第一篇文章和最后一篇评论重复…求指导…

    • 露兜

      @落定 本地twentyten主题测试没有这样的问题

1 2

发表留言