现在的位置: 首页 > 互联网络 > WP相关 > 正文

WordPress Recent Comments代码

2010-04-29 08:03 WP相关 ⁄ 共 2491字 ⁄ 字号 暂无评论

倘若想使用代码,而不想用插件来调用WordPress最新评论列表?可以在主题的sidebar.php里添加如下的代码:

 
01 <?php
02 global $wpdb;
03 $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
04 comment_post_ID, comment_author, comment_date_gmt, comment_approved,
05 comment_type,comment_author_url,
06 SUBSTRING(comment_content,1,30) AS com_excerpt
07 FROM $wpdb->comments
08 LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
09 $wpdb->posts.ID)
10 WHERE comment_approved = '1' AND comment_type = '' AND
11 post_password = ''
12 ORDER BY comment_date_gmt DESC
13 LIMIT 10";
14 $comments = $wpdb->get_results($sql);
15 $output = $pre_HTML;
16   
17 foreach ($comments as $comment) {
18 $output .= "\n<li>".strip_tags($comment->comment_author)
19 .":" . " <a href=\"" . get_permalink($comment->ID) .
20 "#comment-" . $comment->comment_ID . "\" title=\"on " .
21 $comment->post_title . "\">" . strip_tags($comment->com_excerpt)
22 ."</a></li>";
23 }
24   
25 $output .= $post_HTML;
26 echo $output;?>

注:具体的演示效果可以查看本站主页的侧边栏。
基本的代码就完成了。现在,可以进一步对这份PHP代码做一些扩展,以完成更多的呈现形式。

1. 截断留言或者说限制留言字数

 
1 SUBSTRING(comment_content,1,30)

这句里面的30就是留言字数限制。至于有朋友说到如何在结尾添加省略号,找到下面的foreach遍历那块,在或你想放的地方插入省略号就OK了。

2. 限制留言条数

 
1 LIMIT 10";

这里的10就是你想输出的留言条数。

3.显示Gravatar头像
Gravatar头像是通过留言者邮件来判断显示的。所以先在$sql这块加上字段comment_author_email,形成:

 
1 $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
2 comment_post_ID, comment_author, comment_date_gmt, comment_approved,
3 comment_type,comment_author_url,comment_author_email

然后在foreach这块加上调用gravatar头像的代码, 形成类似:

 
1 foreach ($comments as $comment) {
2 $output .= "\n<li>".get_avatar(get_comment_author_email('comment_author_email'), 32).strip_tags($comment->comment_author)
3 .":" . " <a href=\"" . get_permalink($comment->ID) .
4 "#comment-" . $comment->comment_ID . "\" title=\"on " .
5 $comment->post_title . "\">" . strip_tags($comment->com_excerpt)
6 ."</a></li>";
7 }

这样就OK了。

4.排除admin留言
如果你的博客里面,自己的留言比较多的话,把这些排除会比较好一些。否则有时一个最新评论列表里面就只看得到你一个人的留言。不知道的还以为你在自己的博客里灌水。

找到下面的代码:

 
1 WHERE comment_approved = '1' AND comment_type = '' AND
2 post_password = '

这些代码主要就限定你的留言列表中的每个条目所属的范围。比如comment_approved限定显示已通过审核的留言, comment_type限定留言的形式等等。而如果要排除admin,可以通过两种方式:
1.user_id=’0′
添加一个AND 把这句加到上面去,形成如:

 
1 WHERE comment_approved = '1' AND comment_type = '' AND
2 post_password = '' AND user_id="0"

那留言列表里面就只会显示访客也就是非注册用户的留言。对于大多数WordPress博客来说,这都是适用的。好像也没有多少人开放注册。
2.comment_author != ‘admin’
留言作者不是admin,排除admin的留言。当然也适用于排除其它指定留言作者。需要注意的是,如果你这里排除的留言作者是中文名,要保证你的最新留言列表这个文件是UTF-8或ANSI as UTF-8编码。否则会无效。

当然还有一些排除的方法和其它的留言列表扩展应用,就不一一介绍了,大家触类旁通,自己去研究。有兴趣的朋友可以对照着你的WordPress数据库-表 wp_comments里面的各个字段,创建出你自己需要的留言列表,或者一些有趣的留言类应用。比如你可以弄一个列表只显示自己的回复,方便已留言且等待你回复的用户查看。

wp_comments

给我留言

留言无头像?