每个产品类别的总价格 - Woocommerce

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

在 WordPress 页面上,我想显示所有产品类别,然后显示该类别中产品的总价值,然后显示一行总计。例如:

类别 # 个产品 总价值
邮票 100 2099,-
硬币 400 2399,-
卡片 50 399,-
总计 550 4897,-

所以基本上,我需要为每个类别创建一个循环,然后将这些产品的每个常规价格相加。最后,我需要将所有这些价格相加以获得总数。

伪代码/(不起作用):

$categories = get_categories();
foreach($categories as $category) {
   echo <a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a>>';
}
$totals_per_category = array();
 foreach($categories as $key => $category) {
 foreach($category as $id => $value) {
                $totals_per_category[$id] += $value;
            }
}
Echo $value;

感谢您提供有关如何完成这项工作的任何建议。

php wordpress woocommerce
1个回答
1
投票

要获取所有类别,您可以使用

get_terms
函数,如下所示:

    $categories = get_terms(
        array(
            'taxonomy'   => 'product_cat',
            'orderby'    => 'name',
            'hide_empty' => false,
        )
    );

请根据您的需要随意修改参数。一旦你有了一个术语数组,你就可以用它来获取每个类别的术语 ID,并使用后者来运行 SQL 查询,这将允许你获取该类别中所有产品的总价值。

可以这样做:

    $totals_per_category = array();
    foreach ($categories as $key => $category) {
        $term_id = $category->term_id;
        global $wpdb;
        $total = $wpdb->get_var(
            "
            SELECT sum(meta_value)
            FROM $wpdb->postmeta
            INNER JOIN {$wpdb->term_relationships} ON ( {$wpdb->term_relationships}.object_id = {$wpdb->postmeta}.post_id )
            WHERE ( {$wpdb->term_relationships}.term_taxonomy_id IN ($term_id) )
            AND {$wpdb->postmeta}.meta_key = '_regular_price'"
        );
        $totals_per_category[$term_id] = $total;
    }

现在,由于我们有了每个类别的总产品价值,因此我们可以使用

array_sum
获得所有类别的总价值。

echo array_sum($totals_per_category); // This will output the total of all categories

现在您可以使用上面的逻辑来检索总计并根据需要围绕它构建标记(表、div ...等)。

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