总结特定类别中所有帖子的元值

时间:2013-10-19 15:39:17

标签: php wordpress

我有一个Nexus 4类别,其中包含:lg-nexus-4-e960

在此类别中,我有100个帖子。 在wp_postmeta表中,每个帖子都有一个meta_field = sales_count和一个meta_value = 1或更多。

我想要的是在自定义模板的循环之外回显该组合的所有sales_count的总值。基本上可以获得销售额。

我对它如何运作有所了解,但我没有实施它的知识。 查询保存自定义字段的wp_postmeta表,并使用sum()sql函数?

我尝试了这段代码,但它没有类别规范:

<?php
$meta_key = 'sales_count';//set this to your custom field meta key
$allmiles=$wpdb->get_var($wpdb->prepare("SELECT sum(meta_value) FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key));
echo '<p>Total miles is '.$allmiles . '</p>';
?>

3 个答案:

答案 0 :(得分:0)

也许不是最优雅的解决方案

<?php

$catPost = get_posts(array('category' => get_cat_id("yourCategory"))); //change this
foreach ($catPost as $post) {
    setup_postdata($post);
    $ids[] = get_the_ID();
}

//we now have an array of ids from that category, so then
$idList = implode(",", $ids); //turn the array into a comma delimited list

$meta_key = 'sales_count';//set this to your custom field meta key
$allmiles = $wpdb->get_var($wpdb->prepare("
                                  SELECT sum(meta_value) 
                                  FROM $wpdb->postmeta 
                                  WHERE meta_key = %s 
                                  AND post_id in (" . $idList . ")", $meta_key));
echo '<p>Total miles is ' . $allmiles . '</p>';
?>

答案 1 :(得分:0)

更快的方式:

$allmiles = $wpdb->get_var($wpdb->prepare( 
            "SELECT sum( meta_value )
            FROM $wpdb->postmeta
            WHERE meta_key LIKE %s
            AND post_id
            IN ( 
            SELECT post_id
            FROM $wpdb->term_relationships
            WHERE term_taxonomy_id = %d
            )" , $meta_key , $cat_id ) );

答案 2 :(得分:0)

对于仍在寻找更详细解决方案的任何人,我根据chiliNUT的上述回答进行以下工作-基于页面ID的条件:

spring:
  datasource:
    hikari:
      pool-name: MyDataPoolName