显示每位作者每天的评论数量

时间:2013-05-14 作者:user1627363

这可能吗?我从未见过它被使用,但我需要它。。。我想为每个作者(如果他们登录)在他们自己的个人资料页面上显示他们今天发表的评论量。如果一天过去了,计数器必须为0,注释计数器必须重新开始。

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

您可以使用user_id 注释表中的字段作为过滤器:

function count_user_comments_today( $uid ){
    global $wpdb;
    $today = date(\'Y-m-d\');
    $tomorrow = date(\'Y-m-d\', time() + 86400);
    $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d  AND comment_date >= %s  AND comment_date < %s ", $uid, $today, $tomorrow  ));
    return $count;
}
其中,我们使用PHP来给出当前日期,而不在每一行上使用任何SQL日期函数。

您还可以考虑使用WP_Comment_Query 如果您正在寻找更原生的解决方案,请初始化。

用法:

您可以对当前登录的用户这样使用它:

global $current_user;
get_currentuserinfo();
echo count_user_comments_today( $current_user->ID );
对于当前作者:

echo count_user_comments_today( get_the_author_meta(\'ID\') );
在模板页面的循环中author.php.

外循环输入author.php 您可以使用:

global $wp_query;
$curauth = $wp_query->get_queried_object();
echo count_user_comments_today( $curauth->ID );
对于当前作者。

SO网友:Brian

是的,这绝对有可能。提到http://codex.wordpress.org/Function_Reference/get_comment, 您需要以UNIX格式获取当前服务器时间,然后转换comment_date_gmt 从每个返回的foreach

function current_user_comments_today() {
 global $comment;
 global $current_user;
 get_currentuserinfo();
 $all_user_comments = get_comments( array( \'comment_author_email\' => $current_user-> user_email) );
 $today = strtotime(\'today GMT\'); 
 $tomorrow = strtotime(\'today +1 GMT\'); 
 $comment_count = 0;
 foreach ( $all_user_comments as $key => $comment ) {
    $comment_time = strtotime( $comment[\'comment_date_gmt\'] );
    if ( $comment_time > $tomorrow && $comment_time < $today ) {
      $comment_count++;
    } else {
      continue;
    }
 }
 return $comment_count; 
}

SO网友:s_ha_dum

我不知道有什么方法可以直接用核心函数拉取这个查询,但SQL很简单。

$sql = "SELECT COUNT(comment_ID) 
        FROM {$wpdb->comments} 
        WHERE comment_author = \'admin\' 
        AND DATE(comment_date) = FROM_UNIXTIME(\'".time()."\')";
$a = $wpdb->get_var($sql);
您可以交替使用AND DATE(comment_date) = FROM_UNIXTIME(\'".time()."\')"; 选择任何特定日期。

结束

相关推荐

Number of displayed posts

我已经尝试了很多方法来解决这个问题。所以我有一个插件,它在一个小部件中显示分配给用户的项目。它将项目显示为帖子。问题是它只显示5 页面上的项目。我正在发送一个显示帖子的代码:$projects = get_posts(array(\'post_type\' => \'projects\')); 有个人叫我把它改成$projects = get_posts(array(\'post_type\' => \'projects\', \'number posts\' => 10));