用户的评论总数,不包括对自己帖子的评论

时间:2013-05-25 作者:Christine Cooper

我目前正在开发一个我暗示过的插件here 到目前为止,我已经成功地对所有内容进行了编码,但只遗漏了一块拼图。

这是我获取current_user:

global $wpdb, $current_user;
get_currentuserinfo();
$userID = $current_user->ID;

$where = \'WHERE comment_approved = 1 AND user_id = \' . $userID ;
$comment_count = $wpdb->get_var("SELECT COUNT( * ) AS total 
     FROM {$wpdb->comments}
     {$where}");

echo \'Total Comments: \' . $comment_count;
我想echo 这个current_user\'s总评论计数other users posts, 所以我不想计算作者自己帖子上的评论。这可能吗?如果是,怎么做?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

我不知道有任何WordPress函数可以这样做,因此您可以尝试使用这种查询(未测试):

function get_custom_user_comments_count( $uid ){
    global $wpdb;

    $sql = "SELECT COUNT(*) as total 
            FROM {$wpdb->comments} as c  
            JOIN {$wpdb->posts} as p ON p.ID = c.comment_post_ID 
            WHERE c.comment_approved = \'1\' 
            AND p.post_status =\'publish\'  
            AND p.post_type =\'post\'  
            AND p.post_author != c.user_id            
            AND c.user_id = %d";

    $comment_count = $wpdb->get_var( $wpdb->prepare( $sql, $uid ) );
    return $comment_count;
}
使用方法如下:

global $current_user;
get_currentuserinfo();
echo \'Total Comments: \' . get_custom_user_comments_count( $current_user->ID );
这假设注释是在用户登录时写入的,因此user_id 填充wp\\U comments表中的列。

更新:另一种方法是收集用户元中每个用户的评论数。例如,您可以尝试钩住comment_post 行动这种方法可以在用户在站点上写评论之前实现。

结束