2012年6月10日星期日

精通WordPress主题-8: WordPress最新留言列表代码

如何直接使用代码调用wordpress留言列表?已经在本系列的第5节(直接调用WordPress最新文章/随机文章/最新留言)里面有过介绍。

现在,则进一步对这份PHP代码做一些简单的讲解,达到一些扩展应用。

<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_html;

foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . " <a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"on " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}

$output .= $post_HTML;
echo $output;?>

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

SUBSTRING(comment_content,1,30)

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

2. 限制留言条数

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

3. 显示Gravatar头像

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

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

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

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

4. 排除admin留言

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

找到下面的代码:

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

这些代码主要就限定你的留言列表中的每个条目所属的范围。比如comment_approved限定显示已通过审核的留言, comment_type限定留言的形式等等。而如果要排除admin,可以:

  1. user_id=”0″
    添加一个AND 把这句加到上面去,形成如:
    WHERE comment_approved = '1' AND comment_type = '' AND
    post_password = '' AND user_id="0"

    那留言列表里面就只会显示访客也就是非注册用户的留言。对于大多数WordPress博客来说,这都是适用的。好像也没有多少人开放注册。

  2. comment_author != ‘admin’
    留言作者不是admin,排除admin的留言。当然也适用于排除其它指定留言作者。需要注意的是,如果你这里排除的留言作者是中文名,要保证你的最新留言列表这个文件是UTF-8或ANSI as UTF-8编码。否则会无效。

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

wp comments 精通WordPress主题 8: WordPress最新留言列表代码

wp_comments表

来源于 精通WordPress主题-8: WordPress最新留言列表代码 | 帕兰映像

没有评论:

发表评论