是否可以统计同一个post_id的相同meta_key的数量。
我有一个 post_id 44 的页面,每次用户在此页面上提交某些内容时,都会添加一个新的数据库规则,其中元键为“post_ rating_0”。
这个页面现在有超过 30 条规则,我想数一下。 对于其他页面同样的事情。
这可能吗?
到目前为止的代码:
global $post;
$query_args = array(
'post_type' => 'page',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => 'post_rating_0'
// 'fields' => 'SUM(amount_to_paid)',
);
$sum = 0;
$query = new WP_Query($query_args);
if ( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
// do the processing for each post
$sum = $sum + intval(get_post_meta(get_the_id(),'post_rating_0', true ));
}
}
echo $sum ;
这就是我到目前为止所得到的......但这所做的是呼应“2”的值,这是非常逻辑的。它会搜索带有meta_key“post_ rating_0”的帖子,对它们进行计数,结果是 2 个帖子。
我想做的是计算一页中meta_keys“post_ rating_0”的数量。
此修改后的代码将为您提供一个包含所有
post_id
以及相应数量的特定元的数组:
$meta_arr = array();
$query = new WP_Query($query_args);
if ( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
$post_id = get_the_id();
$meta_arr[$post_id] = intval(get_post_meta($post_id, 'post_rating_0', false));
}
}
print_r($meta_arr);
做了更多研究并进行了一些修改,我设法让它工作。这是最终的代码:
$pagina_id_test = get_the_id();
// retrieve all meta_values with key 'post_rating_0' from database
$reviews_posts = $wpdb->get_results("
SELECT meta_value FROM " . $wpdb->prefix . "postmeta
WHERE meta_key = 'post_rating_0'
AND post_id = $pagina_id_test", ARRAY_A);
// define reviews array
$reviews_count = array();
// iterate through meta_values, count the occurence of each review
foreach ($reviews_posts as $reviews_post) {
if (isset($reviews_count[$reviews_post['meta_value']])) {
$reviews_count[$reviews_post['meta_value']] = $reviews_count[$reviews_post['meta_value']] + 1;
} else {
$reviews_count[$reviews_post['meta_value']] = 1;
}
}
// echo results
$aantal_reviews = 0;
foreach ($reviews_count as $review) {
$aantal_reviews++;
}
echo $aantal_reviews;
global $wpdb;
global $post;
$post_id = $post->ID;
$c = $wpdb->get_row("SELECT COUNT(*) as NBR FROM {$wpdb->postmeta}
WHERE post_id={$post_id} AND meta_key='post_rating_0' AND
(SELECT ID FROM {$wpdb->posts} WHERE ID={$post_id} AND post_type='page') IS NOT NULL");
echo $c->NBR;
选择帖子计数,其中
post_type
是页面,meta_key
='post_ rating_0'