用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;}

效果图:

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

zww
or
oooo

“用get_comments()函数实现带头像最新评论”有132条评论

  1. Dianso says:

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

    1. zwwooooo says:

      @Dianso
      嗯,还是用封包的好

  2. Jayuh says:

    哇,又学了一个wordpress函数!

    1. zwwooooo says:

      @Jayuh
      这函数很常用,只是觉得老是sql不方便。

  3. 小闇 says:

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

    1. zwwooooo says:

      @小闇
      慢慢折腾,哈

  4. 万戈 says:

    哟,大叔最近对官方文档研究的很透彻嘛

    1. zwwooooo says:

      @万戈
      没有研究(英文差),只是闲时发呆突然想到就试试

  5. 这个很不错 收藏一下!可以省个插件呢

    1. zwwooooo says:

      @yesureadmin
      呵呵,换个方式

  6. 球犯 says:

    嘿嘿 支持~你可真是厉害~

  7. IM路人 says:

    主题已有,mark学习

    1. zwwooooo says:

      @IM路人
      嗯,这是另外一种方法

  8. winy says:

    这个我用过,还加上了wp自带的add_cache缓存

    1. zwwooooo says:

      @winy
      那现在你用那个?sql的?add_cache我不知道怎么用。。。

  9. A.shun says:

    这个代码好像精简了很多 :cool:

    1. zwwooooo says:

      @A.shun
      因为数据库查询交给这个函数了

  10. 嘎嘎 我喜欢这样的实现方法

    1. zwwooooo says:

      @李小鹏个人博客
      呵呵,大家也不喜欢看到一大串sql语句

  11. ithillad says:

    这个好,虽然暂时还用不着,先收藏了~
    get_comments()是不是3.0以后更新过了啊?

    1. zwwooooo says:

      @ithillad
      没有吧,没细看

  12. 阿疯 says:

    好东西哈.

  13. 竹下无为梦 says:

    这个很实用。

  14. QiQiBoY says:

    你为什么要取200个,直接取需要的数目不就完了。。

    1. zwwooooo says:

      @QiQiBoY
      因为get_comments()函数没有提供排除博主评论的参数,我只能取出一部分然后根据取出的数据排除博主评论,此函数参数里只能 = 不能用 !=

  15. 小杰 says:

    好东东~~抱走了~

  16. fblue says:

    不错,收藏,加到我的主题里试试 :smile:

    1. zwwooooo says:

      @fblue
      测试一下吧

    2. fblue says:

      @zwwooooo
      用上了,添加了文章标题和截断.和原来的基本一样了 :mrgreen:

    3. zwwooooo says:

      @fblue
      哈,其实一样的,就是方法不同

  17. heson says:

    怎么判断2个博客作者的邮箱?!像我这种情侣博客有2个作者咧~~~

    1. zwwooooo says:

      @heson
      直接填作者邮箱吧,把
      $rc_comment->comment_author_email != $my_email
      改为
      $rc_comment->comment_author_email != '作者1邮箱' || $rc_comment->comment_author_email != '作者2邮箱'

  18. 囧啊囧 says:

    有意思,不过我博客速度不快,而且也不是CSS所以我还是默认的好。

    1. zwwooooo says:

      @囧啊囧
      默认?默认是没有头像的,呵呵

    2. 囧啊囧 says:

      @zwwooooo
      就是要默认无头像嘛,有头像就有照片有照片就要加载图片,加载图片就会影响本身就不快的博客访问速度。

    3. zwwooooo says:

      @囧啊囧
      哦,我本地缓存

  19. 秋上书 says:

    先不折腾,等等再说。

    1. zwwooooo says:

      @秋上书
      闲时折腾吧

  20. 小邪 says:

    杯具,get_comments()不给力啊 ~
    没有exclude参数。。。。

    1. zwwooooo says:

      @小邪
      对啊,用它还要这样用

回复给 球犯 ¬
取消回复

昵称 *

网址

B em del U Link Code Quote