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
博主好!
我需要一个显示所有文章评论的页面即可。本来想改动meta的评论RSS数目(一般空间为10-100)。一时也找不到可以修改的地方。我确实看到有这样的页面,甚至可以按照月份来显示,就如同文章索引差不多。如果有可能请帮助我,谢谢!
@hongwang777 请关注本博客的文章,最迟明晚之前给你回复。
@Ludou 速度这么快,谢谢了,辛苦了!
不错。
我也一直关注这个问题很久了,虽然上面叙述的可以实现文章后面出现评论内容
不过连评论框都出来了,这样让页面显示的很不满意
最终的理想结果是:
像门户网站评论内容一样,在每篇文章标题后面 添加规定字数的评论内容,而不是全部评论内容都出来。
@沉寂号 那你自己修改以下首页的评论模板就可以了
@Ludou 怎么修改评论模板呢?我已经把comment复制了。该改的全改了,很难只纯粹提取最后一条评论,而且是按字数截取,大拿能否详细告知?考虑我等菜鸟的接受能力。
另外,现在所有文章下的评论显示出来的都是第一篇文章的评论。没有按每篇文章单独的评论来处理。
@abc $comments = get_comments('order=ASC&count=1&post_id=' . $post->ID);
echo mb_strimwidth($comment->comment_content, 0, 34, '..', 'utf-8');
// 34是字数
@Ludou 谢谢!我现在的博客可以显示最后一条评论了。博主有机会是否研究下,如何显示同意人数最多的评论(插件),哈哈,得寸进尺了。
@abc comment digg 插件
我自己的博客别人评论过的,一般都是隐藏的,我要自己点击展开才能看的到,怎么样默认让他显示出来的呢?
@eva 不同主题的功能不一样,我没法给你提供解决方法。
博主你好!
我的博客中人家评论后的“回复”那个字不见了,我怎么样才能把它显示?有空帮我,等你回复!谢谢~!
@izdengin 很抱歉,我不了解你的博客情况,也不懂你博客的文字。
你可以回忆一下之前做了哪些更改,然后恢复过去试试。
@Ludou 之前是很好的, 不知什么原因博客搬家后就不见了…
虽然博客的文字不同,但是主题结构是一样的, 博客系统是Wordpress3.0.5版, 主题是checkerize主题… 没有什么特别的地方…
@izdengin 这个你自己找原因吧,有可能是某些插件被禁用了
@Ludou 谢谢,终于变回来了….
原来我禁用了一个插件….
很需要这篇文章的内容,谢谢提供!
呵呵..不好意思..边这个都写错了..最近在学Wordpress建博客,基础太差了,学得好慢,谢谢分享..
测试下头像
感谢你提供的方法,但还有个问题,怎么控制显示的条数啊,我是用
<?php wp_list_comments('type=comment&callback=iphoto_comment&per_page=9999&max_depth=1000'); ?>
来调用的。
@jason 9999
博主能放出现在www.soword.com的主题吗? 很喜欢喔!~
@cmxcf5 没时间
显示某篇日志或页面的所有评论
wp_list_comments( array( 'callback' => 'twentyten_comment' )
我现在自己的主题 wp_list_comments( array( 'callback' => 'xxx_comment' )
得需要改什么地方呢??
得怎么才能获取所有评论呢?求助啊!!!
@张帅 wp_list_comments( array( 'callback' => 'xxx_comment' )
本身就是列出所有评论的意思。如果要改每条评论的HTML形式,可以在functions.php中修改
函数xxx_comment()
@Ludou 这个我知道,感谢您的帮助。
我就是找不到他们是怎么关联起来的……
博主你好,我想问下怎么在文章标题下显示多少人来过,多少人在在篇文章下评论几条?谢谢!
@小达 1、评论数可以参考这篇文章 4、显示评论数:
https://www.ludou.org/create-wordpress-themes-single.html
2、点击量用插件WP-PostViews,具体使用方法上网找
太感谢了,这篇文章实在是太有用了!
现在有个问题请教一下。我的首页文章部份,分成了两块。现在文章下面的评论框可以正常显示了。但是当前文章的评论,我不想显示在评论框上面,而是显示在文章旁边。。。(不是边栏),不知道有没有单独调用当前文章评论的标签?谢谢!
@千里博客 wp_list_comments()
@Ludou 这个好像不行。可能是我没有表达清楚。我画了个示意图,你看一下
http://www.1000km.net/test.jpg
谢谢!
现在正在你博客上翻箱倒柜呢。。。从头到尾。一篇一篇的看。。还要记录。。嘿嘿。
全是些实用的东西。。太感谢了!
@千里博客 这个得配合css,具体代码我不清楚,不同主题也不一样,你在自己搞搞吧。
如何在列表页面每篇文章只显示文章第一条评论!
感谢楼主,可以实现,但是问题是调用了全部评论。要怎么才可以设置只调用当前文章的?
@颜色 可以使用get_comments函数,传递具体的文章id即可:
http://codex.wordpress.org/Function_Reference/get_comments
很有用的文章,多谢。
现在发现一个问题,就是按照文章中提供的方法,可以在文章列表页面实现评论功能。
启用多说插件后,文章列表页面无法使用多说评论功能,只使用主题自带的默认评论样式,但是单篇文章(single.php)中可正常使用多说评论功能,特请求大师协助,谢谢。
@世风 请与多说客服联系
楼主强大!按照你的方式,果然调出了回复。
但是,有几个问题:
1、如果随便写一个不存在的PHP模板文件,则还可以正常显示该文章下的评论,但是,如果把comments复制一个comments2.php,则显示评论失败,还是评论窗口,但是显示到不知道哪个版块的评论去了,比较让人困惑;
2、如何仅用文本形式在文章摘要下显示最后一条评论的摘要?这个比较难,谢谢楼主。楼主好人啊~ 在日理万机之外给我解答解答吧。谢谢
@abc 楼主啊,我第1条表述有误,重新说一下。现在我把COMMENTS.php 复制为 COMMENTS2.PHP 并修改上传后,有效果了,但是,出现的问题是:文章列表页第一篇文章和最后一篇文章,调用的全是第一篇文章的评论,而且是有头像啊日期啊什么乱七八糟的信息。
1、我想在文章下只调用特定的一条文章评论(如第二条评论或者末尾评论),应该怎么操作?默认就是沙发评论;
2、我想各个文章都调用各个文章的某条评论,而不是文章列表页的文章调用的全是第一篇文章同样的评论,应该怎么做?
感谢楼主放开留言,希望楼主在百忙之中能抽空照顾一下我们菜鸟的问题,感激不尽呀~
@abc 你的我出现了同样的问题,不知道你的解决了么。。
楼主,你好!
以上的方法的确可以推广到分类页, 我的分类评论不是循环这内,我用query_posts调用的循环,采用上述方法以后,我在分类页测试评论,当发表以后,它会自动把评论加到分类目录里面最后一篇文章,不知道这是什么原因呢?
@匹夫的逆袭 这个问题没法帮你。
找了半天找不到那个inline_comments.php下载地址…
@doghap 不同主题的代码不能通用。自己写个代码,或者把comments.php中的代码复制到inline_comments.php,再自己酌情修改。
博主能不能实现这个功能,就是像QQ空间个人中心那样的评论,可以伸缩的,你这个我放到博客试了一下,可以倒是可是,但是评论框直接是显示在首页每篇文章底部的,太占页面了,也不好看,不知道能不能弄成类似糗百、快乐麻花、qq空间那样的评论、、、
@好久不贱 这个功能需要定制,如果需要我写代码,请到以下网址购买付费服务,购买数量填100:
http://app.ludou.org/item/work/
然后给我的邮箱打包发送你主题目录下的index.php和style.css,改完后给你回复。
Ludou,太感谢你了,解决一个让我头痛的问题
//首页评论样式
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比较无知,请博主指点一下,万分感激
@邪风 没办法
@邪风 折中的办法是,你进入后台 – 设置 – 讨论, 分页显示评论,每页显示 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/
@邪风 wp_list_comments没有排序参数,所以没办法获取你所谓的最后一条。
my_comment不存在,WordPress使用内置的评论结构,也不能达到你要的最后一条
@Ludou 问题是,我诡异的成功调用了最后一条,所以我想知道是为什么可以诡异的成功调用最后一条,但是源码中出现了几个 </li><!– #comment-## –> 的代码 我该如何删除这个多出来的代码
@邪风 不清楚具体情况
很明显 <?php wp_list_comments('type=comment&callback=my_comment') ?> 这个 my_comment 是不存在的,利用这个错误,却可以实现,我十分费解,想知道这个地方到底如何书写才够正确
@邪风 问题是,我诡异的成功调用了最后一条,所以我想知道是为什么可以诡异的成功调用最后一条,但是源码中出现了几个 </li><!– #comment-## –> 的代码
我使用了多说评论,请教如何设置评论显示数量?求解
出现abc同样的问题…第一篇文章和最后一篇评论重复…求指导…
@落定 本地twentyten主题测试没有这样的问题