是否可以为相同的post_id计算相同的meta_keys的数量。
我有一个带有post_id 44的页面,每次用户在此页面上提交内容时,都会添加一个新的数据库规则,并带有meta_key“ 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个帖子。
我想做的是计算一页中“ post_rating_0”的meta_keys的数量。
答案 0 :(得分: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);
答案 1 :(得分:0)
做了一些更多的研究,并进行了一些修改,使它开始起作用。这是最终代码:
$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;
答案 2 :(得分:0)
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'