统计具有特定评论元值的用户评论数

时间:2013-06-30 作者:whiteletters in blankpapers

我使用下面的代码计算某个用户的评论数:

global $wpdb;

        $count = $wpdb->get_var(
          \'SELECT COUNT( comment_id ) FROM \'. $wpdb->comments .\'
          WHERE user_id = \'.$user->ID.\'
          AND comment_approved = "1"
          AND comment_type NOT IN ("pingback", "trackback" )\'
        );
此外,我还使用了一个注释元字段(“考虑”),它将0或1作为值。要获得其价值,我使用:

get_comment_meta($comment_id, \'consider\',true);
如何合并这两个操作,以便获得用户提交的注释数以及具有元值的注释数\'consider\' 等于1? 我不是SQL用户,似乎需要在SQL查询表中使用wp_commentmeta?

我们永远感激你的帮助。

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

您的基本问题是一个纯SQL问题。

$count = $wpdb->get_var(
  \'SELECT COUNT( comments.comment_ID ) FROM \'. $wpdb->comments .\' as comments
  LEFT JOIN \'.$wpdb->commentmeta.\' AS cmeta ON comments.comment_ID = cmeta.comment_id
  WHERE user_id = 1
  AND comment_approved = "1"
  AND comment_type NOT IN ("pingback", "trackback" )
  AND cmeta.meta_key = "rating"
  AND cmeta.meta_value = 5\'
);
为了便于阅读,我把它整理了一下。

您使用该SQL所做的工作与您使用。。。。

$args = array(
  \'type\' => \'\',
  \'user_id\' => \'1\',
  \'count\' => true,
  \'meta_key\' => \'rating\',
  \'meta_value\' => \'5\',
);
$count = get_comments($args);
您并没有明确地排除trackback和pingback,但我非常确定trackback和pingback永远不会有关联的用户ID,所以您是通过该机制排除它们的。

SO网友:Obama

尝试以下操作:

SELECT
    COUNT(*) AS RESULT
FROM
    wp_commentmeta a,
    wp_comments b
WHERE
    a.comment_id = b.comment_ID
AND a.meta_value = 1
AND user_id = 2
希望有帮助!

结束