用get_comments()函数实现带头像最新评论

其实WordPress官方一直不推荐直接用SQL语言调用数据库数据,所以一直以来WordPress官方主题审核中,直接用SQL语句的代码是通不过审核的,这也是为啥我提交的主题都没有提供“带头像的最新评论”代码。

去年提交的主题偶尔会让你通过使用SQL语句实现的带头像最新评论的代码,后来就不行了,审核结果是不准直接使用SQL,请使用get_comments()。但因为对get_comments()函数不熟,加上官方函数文档不够详细,所以一直没折腾。

今年国庆窝在家里,比较闲,就稍微研究了一下,没想到竟然搞定了,虽然效率方面没有直接用SQL快,但这点速度差异我们是感觉不出来的,速度的问题还是交给主机吧。

下面是我折腾好的代码,直接CP到侧边栏即可使用,当然还要根据自己主题设置一下css样式。

get_comments()函数实现的带头像最新评论代码

2010.10.10Edit:增加对表情输出)

<h3>Recent Comments</h3>
<ul class="recentcomments">
<?php
$show_comments = 10; //评论数量
$my_email = get_bloginfo ('admin_email'); //获取博主自己的email
$i = 1;
$comments = get_comments('number=200&status=approve&type=comment'); //取得前200个评论,如果你每天的回复量超过200可以适量加大
foreach ($comments as $rc_comment) {
	if ($rc_comment->comment_author_email != $my_email) {
		?>
		<li><?php echo get_avatar($rc_comment->comment_author_email,32); ?><span class="comment_author"><?php echo $rc_comment->comment_author; ?> says:</span><br /><a href="<?php echo get_permalink($rc_comment->comment_post_ID); ?>#comment-<?php echo $rc_comment->comment_ID; ?>"><?php echo convert_smilies($rc_comment->comment_content); ?></a></li>
		<?php
		if ($i == $show_comments) break; //评论数量达到退出遍历
		$i++;
	} // End if
} //End foreach
?>
</ul>

其中 $show_comments = 10 里面的 10 是要显示的评论数量。

ps1:评论截断你可以用php截断函数 mb_strimwidth() 实现,具体参考《mb_strimwidth函数的简单应用

ps2:也可以用css的overflow:hidden属性实现假截断,参考我的css:

#sidebar .recentcomments img.avatar{width:26px;height:26px;float:left;position:relative;border:1px solid #ddd;margin:0 5px 0 0;padding:2px;}
#sidebar ul.recentcomments{list-style:none;padding-left:0;}
#sidebar ul.recentcomments li{margin:5px 0 0;line-height:16px;height:32px;overflow:hidden;}
#sidebar .comment_author{color:#999;}

效果图:

折腾完,喜欢用哪个就用哪个吧。

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25317

131 comments

  1. Dianso Dianso Google Chrome 6.0.472.63 Windows 7

    还是用wp自带的函数好,解决资源

    沙发
  2. Jayuh Jayuh Firefox 3.6.10 Windows XP

    哇,又学了一个wordpress函数!

    板凳
  3. 小闇 小闇 Google Chrome 6.0.472.55 Windows XP

    回家速折騰了,代碼抱走 :razz:

    地板
  4. ......
  5. 七七 七七 360Safe Explorer Windows XP

    嗯,自己一直没折腾这个,不错的方法!

    31楼
  6. sunbird sunbird Google Chrome 7.0.517.17 Windows 7

    学习了,自己一直用插件,还是自己会好啊 :razz:

    32楼
    • zwwooooo zwwooooo Opera 10.70 Windows 7

      @sunbird
      因为不太喜欢用一大堆插件,所以还是自己加

    • sunny sunny Safari 9.0 iPhone iOS 9.3.2

      @zwwooooo 网上找教程代码,很多都指向你这里来,我用的是 Google ,在美国,很想知道你们怎么学习的,我自己设计个主题,但是评论模块弄的我半死,总是影响到其他布局!我现在一步步的学习,还请各位前辈多多指教!

  7. crossyou crossyou Firefox 3.6.10 Windows 7

    问下你的这个用户头像是怎么处理的?
    怎么都是请求的你b.zww.me地址的? :evil:

    33楼
  8. MOPVHS MOPVHS Google Chrome 6.0.472.63 Windows 7

    嘿,V5,又多了一个选择啦~~~

    34楼
    • zwwooooo zwwooooo Opera 10.70 Windows 7

      @MOPVHS
      多个选择好

    • MOPVHS MOPVHS Google Chrome 6.0.472.63 Windows 7

      @zwwooooo
      我那边暂时没有邮件通知功能,过来人肉回复 下:

      很奇怪,你的评论n次才成功,前面几次跳转到404页面了

      呃,不是吧,现在还是那样?我已经下载最新的wordpress-3.0.1-zh_CN.zip和zsofa.1.0.8.zip覆盖掉了…

    • zwwooooo zwwooooo Opera 10.70 Windows 7

      @MOPVHS
      又去试了一下,这次是匿名了,2次都是,可能是你的主题cookie问题,貌似抓取到
      测试结果:
      貌似只有填上昵称、email、url(起码要在那3个框点一下)才能评论

  9. 星尔 星尔 Google Chrome 7.0.514.0 Windows XP

    博主好,我本地调试怎么不显示任何评论呢?这个是怎么回事呢?

    35楼
    • zwwooooo zwwooooo Opera 10.70 Windows 7

      @星尔
      其他人都ok,已经经过验证了,认真检查一下。正常情况下直接cp到侧边栏就会显示的了

  10. Wordpress 折腾手记 7 | A.shun's Blog - pingback on 2010/10/13/ 19:57
    36楼
  11. winky winky 360Safe Explorer Windows XP

    本地测试成功,果然够折腾~赞一个。。。

    37楼
  12. 微奇生活 微奇生活 TheWorld Browser Windows XP

    如何不显示trackback呢?我看函数里写的是type=comment,但我的依旧会显示trackback

    38楼
  13. 奚少 奚少 Firefox 3.6.12 Windows 7

    zww大师,我用其他的比如完善篇那个最新评论不能输出表情,不知道为啥。。。然后我用了这个方法。但是产生了个问题就是如果新的评论刚好重新分页后,以前的评论点击以后不能直接跳转到上一个分页。我看你在http://zww.me/archives/24818有说过链接修正。那这个能否修正呢?

    39楼
    • zwwooooo zwwooooo Firefox 3.6.13 Windows 7

      @奚少
      1.我不是大师。。。
      2.你用了评论分页的话用下面这个函数生成评论链接吧

      htmlspecialchars(get_comment_link( $rc_comm->comment_ID)))

      如果你的主题只定义了评论和pingback分离的话就用

      htmlspecialchars(get_comment_link( $rc_comm->comment_ID, array('type' => 'comment')))
    • 奚少 奚少 Safari 5.0.3 Windows 7

      @zwwooooo
      嘿嘿,不好意思,就是不知道如何称呼所以就称呼大师了,以后就称呼zww吧~谢谢,我去试试~

    • zwwooooo zwwooooo Firefox 3.6.13 Windows 7

      @奚少
      大师这称呼压力很大,哈,慢慢折腾

  14. Ben is Me » OK, Computer! 终于完成了! - pingback on 2011/01/25/ 23:43
    40楼
  15. yesureadmin yesureadmin Google Chrome 12.0.742.9 Windows 7

    感觉怎么没有排除自己?

    41楼
  16. DH DH Google Chrome 10.0.648.205 Windows 7

    不错 google搜索到你这里了

    42楼
  17. DH DH Google Chrome 10.0.648.205 Windows 7

    google搜索到这里,并发现有人用了你的文章,google排名比你靠前。

    43楼
  18. 奚少 奚少 Firefox 5.0 Windows 7

    Z大,今天又用到这个代码,我想获得评论文章的title,但是我看了一下这个函数,貌似没有title这一个?我用

    <?php echo get_comment($rc_comment->post_title); ?>

    但是没法显示。求指导~

    44楼
  19. 老钟 老钟 ChromePlus 1.6.2.0 Windows 7

    感谢!用这个代码成功了,另请问下,我想获得评论的时间,使用comment_date; ?>会获取日期和时分秒,能不能只获取日期?新手盼指导

    45楼
  20. 老钟 老钟 ChromePlus 1.6.2.0 Windows 7

    上面代码被过滤掉了,补充下

    comment_date; ?>

    46楼
  21. arik arik Internet Explorer 9.0 Windows 7

    那这个能不能改成《简易版缓存》的?

    47楼
  22. airoschou airoschou Google Chrome 17.0.963.79 Windows XP

    为什么用了后,还是有自己的评论?

    48楼
    • zwwooooo zwwooooo Firefox 11.0 Windows 7 x64 Edition

      @airoschou
      这个函数默认只屏蔽管理员的评论,你检查一下你的用户,看看用来回复的用户邮箱跟管理员的邮箱是不是一致,不是的话自行修改代码给 $my_email 赋值。

  23. 49楼
  24. HelloMRS HelloMRS Firefox 11.0 Windows 7

    截断函数表示怎么添加啊,Z大随便贴一下吧,还有http://zww.me/archives/25453 这个的截断函数怎么添加啊!谢谢咯,还有你的这个主题多少米啊!谢谢咯... :oops:

    50楼
    • zwwooooo zwwooooo Firefox 11.0 Windows 7 x64 Edition

      @HelloMRS
      尝试 mb_substr($title, 0, 15,"utf-8");
      15是文字个数。

    • HelloMRS HelloMRS Google Chrome 17.0.963.83 Windows 7

      @zwwooooo yes,正确搞定,对了,您写过近期热门点击的方法吗?我没找到呢?wp-postviews好像是所以的时间,不能限定时间...好像需要用SQL的方法...一直无解。

    • zwwooooo zwwooooo Firefox 11.0 Windows 7 x64 Edition

      @HelloMRS
      这些需要配合wp-postviews插件统计数据的,所以你可以尝试修改wp-postviews本身的近期热门函数

  25. Duoqiu Duoqiu Google Chrome 18.0.1025.162 Windows 7

    如果要加上评论时间函数要怎么加

    51楼
  26. yoTheme主题修改笔记 | 哆坵 - pingback on 2012/05/27/ 18:04
    52楼
  27. 小蔡记事 小蔡记事 Maxthon 4.0.0.2000 Windows XP

    其实可以更简单点的,像下面那么写就好
    <?php echo get_avatar( $rc_comment, 32 );?>

    53楼
  28. 自然志 自然志 Firefox 22.0 Windows 7 x64 Edition

    发现一个BUG,如果使用“ @回复 ”首页显示的评论链接就是错误的,比如我的 http://ziranzhi.com/
    PHP不是很懂,希望@zwwooooo 能帮忙解答一下

    54楼
  29. Rilun Rilun Google Chrome 28.0.1500.72 Windows 7

    先查询出几百条,然后再来个条件判断,明显得浪费了资源,怎么说呢,有点蛋疼的多余……直接在查询时,加个filter会好一点

    55楼

Leave a Reply