如何选择当前帖子ID?

时间:2018-12-10 作者:sh.dehnavi

我试图获取并计算元键(评级)的值,然后计算总和。但是下面的代码all of values 在里面wp_commentmeta 但我想just for the current post. 我应该如何解决这个问题?

$results = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}commentmeta WHERE meta_key = \'rating\' ");
foreach($results as $result){
    $rate = $result->meta_value;
    $sum +=$rate;
}
$res = $sum/count($results);
$res = number_format((float)$res,2,\'.\',\'\');
以及如何计算当前帖子的5星级评分数(特殊值)。代码:

$countstar = $wpdb->get_var("SELECT count(meta_value) FROM {$wpdb->prefix}commentmeta WHERE meta_key = \'rating\' AND meta_value = \'5\'");

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

您应该能够通过连接wp\\U comments表中的数据来实现这一点,因为该表包含有关哪些评论属于哪些帖子的信息

$sql = $wpdb->prepare( "
    SELECT meta_value 
    FROM {$wpdb->prefix}commentmeta 
    INNER JOIN {$wpdb->prefix}comments ON {$wpdb->prefix}commentmeta.comment_id = {$wpdb->prefix}comments.comment_ID 
    WHERE comment_post_ID = %d AND meta_key = \'rating\' ", get_the_ID() 
);
$results = $wpdb->get_results( $sql );
请注意,MySQL可以为您求和,您不需要使用PHP进行求和。

更新日期:

通过下面的查询,您可以计算当前帖子的五星级评分数

$sql = $wpdb->prepare( "
    SELECT count(meta_value) 
    FROM {$wpdb->prefix}commentmeta 
    INNER JOIN {$wpdb->prefix}comments ON {$wpdb->prefix}commentmeta.comment_id = {$wpdb->prefix}comments.comment_ID 
    WHERE comment_post_ID = %d AND meta_key = \'rating\' AND meta_value = \'5\' ", get_the_ID() 
);
$wpdb->get_var( $sql );
尽管您在foreach循环中迭代评级,但在循环中,您可以计算5星级评级,而无需像这样运行第二个查询

$rating5 = 0;
foreach($results as $result){
    if( $result->meta_value == \'5\' ) {
        $rating5++;
    }
    $rate = $result->meta_value;
    $sum +=$rate;
}

相关推荐

WP_Query & Duplicate entries

我目前正在使用此代码,以便成功且无问题地获取我网站的最新三篇帖子:$posts = get_posts( array( \'numberposts\' => 3 ) ); 但我想切换到wp\\u查询。我尝试了一个简单的wp\\U查询调用,以显示我网站上发布的最新3篇文章:$args = array( \'posts_per_page\' => 3 ); $posts = new WP_Query( $args ); 并使用此PHP代码提供此wp\\U