用get_comments实现WordPress带头像最新评论
前一段在制作zAlive主题的时候需要一个带头像最新评论widget,网上Google了一大圈发现用的最多的是SQL,我也就直接拿来用了,而且神奇的是通过了WP的主题审核,但是后来在更新主题的时候怕不给通过,就索性找别的方法,也就是今天的主角,get_comments()其实用get_comments()实现WordPress带头像最新评论zww很早就有一篇文章介绍,但是从2010年到现在WP已经升级了N多个版本,原来的参数有的已经失效,于是我就重新翻阅文档,用新版的get_comments实现WordPress带头像最新评论。
我写的这个可以指定获取的评论数,头像尺寸,评论字符数
[code lang="php"]
function zAlive_recentComments($count,$avatarSize,$excerptLength){
$comments;
if( $count != 0 ){
//新版的get_comments()不能直接获取指定类型的评论(比如会获取到pingback/trackback),+30是为了多获取一些评论,从而减少获取不到指定数量的评论的机会
$comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $count + 30, 'status' => 'approve', 'post_status' => 'publish' ) ) );
}
$valid_comments_number = 0;//有效评论数
$output = '';
if( !empty ( $comments ) ){
foreach ($comments as $comment) {
$post = get_post( $comment->comment_post_ID );
//评论不是pingback或trackback并且评论所属文章没有密码保护
if( empty ($comment->comment_type ) && empty ( $post->post_password ) ){
$output .= '<li class="clearfix">'. get_avatar($comment, $avatarSize) .'<div class="comment-data"><a class="title" href="' . get_permalink($comment->comment_post_ID) . "#comment-" . $comment->comment_ID . '" title="on ' . strip_tags( $post->post_title) . '">' . wp_html_excerpt( strip_tags ( $comment->comment_content), $excerptLength ) . '</a>' .'<span class="comment_author detailed visible-desktop">From <span class="author">' . $comment->comment_author . '</span> <span class="date">' . $comment->comment_date . "</span></span></div></li>";
$valid_comments_number++;
if( $valid_comments_number == $count )
break;
}
}
}
$output = convert_smilies($output);
echo $output;
}
[/code]
然后就是调用了,比如zAlive_recentComments(10,40,100)