其实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
赏
oooo
or
- 本文标题:用get_comments()函数实现带头像最新评论
- 本文链接:https://zww.me/archives/25317
- 发布时间:2010年10月06日 10:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
google搜索到这里,并发现有人用了你的文章,google排名比你靠前。
@DH
是哪篇呢?这篇的话你要注意别用你登陆google的浏览器搜索
@zwwooooo
为什么 不能用登陆google的浏览器搜索
@DH
因为google帐号会记忆你的搜索历史。
Z大,今天又用到这个代码,我想获得评论文章的title,但是我看了一下这个函数,貌似没有title这一个?我用
但是没法显示。求指导~
@奚少
试试
@zwwooooo
嘿嘿,搞定了鸟,谢谢Z大~
感谢!用这个代码成功了,另请问下,我想获得评论的时间,使用comment_date; ?>会获取日期和时分秒,能不能只获取日期?新手盼指导
上面代码被过滤掉了,补充下
@老钟
(贴代码用code括住)
直接用这个函数即可 get_comment_date()
@zwwooooo
用这个函数是不行的,我试过了
@机巧网
注意参数传递
那这个能不能改成《简易版缓存》的?
@arik
方法不同,而且官方也不推荐直接用sql语句
为什么用了后,还是有自己的评论?
@airoschou
这个函数默认只屏蔽管理员的评论,你检查一下你的用户,看看用来回复的用户邮箱跟管理员的邮箱是不是一致,不是的话自行修改代码给 $my_email 赋值。
截断函数表示怎么添加啊,Z大随便贴一下吧,还有http://zww.me/archives/25453 这个的截断函数怎么添加啊!谢谢咯,还有你的这个主题多少米啊!谢谢咯...
@HelloMRS
尝试 mb_substr($title, 0, 15,"utf-8");
15是文字个数。
@zwwooooo yes,正确搞定,对了,您写过近期热门点击的方法吗?我没找到呢?wp-postviews好像是所以的时间,不能限定时间...好像需要用SQL的方法...一直无解。
@HelloMRS
这些需要配合wp-postviews插件统计数据的,所以你可以尝试修改wp-postviews本身的近期热门函数
如果要加上评论时间函数要怎么加
@Duoqiu
试试:get_comment_date('Y/m/d H:i',$rc_comment->comment_ID)
其实可以更简单点的,像下面那么写就好
<?php echo get_avatar( $rc_comment, 32 );?>
@小蔡记事
没说不可以,只是写清楚点而已,特别是加了缓存自定义头像函数时。
@zwwooooo
恩,你说得也是~方法还是多种多样的~~
发现一个BUG,如果使用“ @回复 ”首页显示的评论链接就是错误的,比如我的 http://ziranzhi.com/
PHP不是很懂,希望@zwwooooo 能帮忙解答一下
@自然志
注意评论列表生成的链接统一用 comment 或者 all
先查询出几百条,然后再来个条件判断,明显得浪费了资源,怎么说呢,有点蛋疼的多余……直接在查询时,加个filter会好一点
@Rilun
但这函数没这个filter,请指教