北极寒流 » 网络资源 » 免插件实现带gravatar头像缓存的最新评论代码 - 2010.08.20

免插件实现带gravatar头像缓存的最新评论代码

免插件实现带gravatar头像缓存的最新评论Recent Comments,功能: 不用插件就可以将WordPress的最新评论显示在侧边栏, 同时包含头像缓存功能.

把下列代码 copy 到模板的 sidebar.php的相应位置

<h3><?php _e('Recent Comments'); ?></h3>
<ul class="recentcomments">
<?php
global $wpdb;
$my_email = get_bloginfo ('admin_email');
$rc_comms = $wpdb->get_results("
  SELECT ID, post_title, comment_ID, comment_author, comment_author_email, comment_content
  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 = ''
  AND comment_author_email != '$my_email'
  ORDER BY comment_date_gmt
  DESC LIMIT 10
");
$rc_comments = '';
foreach ($rc_comms as $rc_comm) {
  $a = 'avatar/'.md5(strtolower($rc_comm->comment_author_email)).'.jpg'; // 头像缓存用的
  $rc_comments .= "<li><img src='" . $a . "' alt='' title='" . $rc_comm->comment_author
    . "' class='avatar' /><a href='"
    . get_permalink($rc_comm->ID) . "#comment-" . $rc_comm->comment_ID
  //. htmlspecialchars(get_comment_link( $rc_comm->comment_ID, array('type' => 'comment'))) // 可取代上一行, 会显示 cpage, 但较耗资源
    . "' title='on " . $rc_comm->post_title . "'>" . strip_tags($rc_comm->comment_content)
    . "</a></li>n";
}
$rc_comments = convert_smilies($rc_comments);
echo $rc_comments;
?>
</ul>

其中 $my_email 已自动判断, 让博主的评论不显示. 当然你也可以在 WHERE 中定义筛选哪些名字的评论不出现.
$a 是用相对路径, 执行有问题的话, 也可改绝对路径.
如果模板有贴图功能, convert_smilies($rc_comments); 可再加一层 embed_images( ... ); 就可显缩图. 在 css 控制缩图的 max-width 和 max-height.
这个代码并不裁剪评论长度, 所以 li 要用 css 控制 overflow:hidden; 让多余的不显示.
global $wpdb 只要一次就够了, 如果其它地方已经有, 可删掉那行.
最新评论通常只运行一次, 没必要写成 function, 以免被 cache 无法更新.

文章来源:http://kan.willin.org/?p=1278

评论关闭