如何统计页面的meta_key?

问题描述 投票:0回答:3

是否可以统计同一个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”的数量。

php wordpress foreach count
3个回答
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);

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;

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'

© www.soinside.com 2019 - 2024. All rights reserved.