首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Woocommerce中获取具有特定产品属性的总购买产品计数

在Woocommerce中获取具有特定产品属性的总购买产品计数
EN

Stack Overflow用户
提问于 2018-06-26 12:51:17
回答 1查看 1.5K关注 0票数 1

我正在使用WooCommerce创建一个自定义报告,它正在工作,但它使用了大量资源,并且它需要更大,如果我增加它的大小,它将超时。我确信有一种更好的方法可以做到这一点。

我正在运行多个查询,以查看已订购了多少特定颜色和大小的产品。目前,这些都是单独的查询,效率不高。下面是我的代码:

这是获取订购数量的函数:

代码语言:javascript
复制
function get_order_by_product_id($product_id, $product_color, $product_size) {
    $args = array ( 
            'limit' => '-1',
            'status' => 'processing',
    );
    $orders = wc_get_orders( $args );
    if($orders) :
        $total = 0;
        foreach( $orders as $order) :
            $order_id = $order->get_id();
            $single_order = wc_get_order( $order_id ); 

            foreach ($single_order->get_items() as $item_id => $item_data) :
                $product = $item_data->get_product();
                $productID = $single_order->get_item_meta($item_id, '_product_id', true);
                $product_name = $product->get_name();
                $color = $single_order->get_item_meta($item_id, 'pa_colors', true);
                $size = $single_order->get_item_meta($item_id, 'pa_sizes', true);
                $item_quantity = $item_data->get_quantity();

                if($productID == $product_id && $color == $product_color && $size == $product_size ) :
                    $total += $item_quantity;
                endif;

            endforeach;
        endforeach;
        echo $total;
    endif;
} 

这是对函数的调用:

代码语言:javascript
复制
get_order_by_product_id(47652, 'black', 'xs');

目前,为了实现这个功能,我一次又一次地为每个产品id、颜色和大小调用该函数。正如我所说的,它是有效的,但它是一种资源消耗。

任何提高效率的想法都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2018-06-26 22:42:22

要计算具有特定属性eq的所有(发布的)产品的颜色为“蓝色”或“黑色”,您可以使用:

代码语言:javascript
复制
$colors = 'black, blue';  
$args = array( 
            'post_type'             => 'product',
            'post_status'           => 'publish',
            'ignore_sticky_posts'   => 1,
            'meta_query'            => array(
                array(
                    'key'           => '_visibility',
                    'value'         => array('catalog', 'visible'),
                    'compare'       => 'IN'
                )
            ),
            'tax_query'             => array(
                array(
                    'taxonomy'      => 'pa_color',
                    'terms'         => explode(",",$colors),
                    'field'         => 'slug',
                    'operator'      => 'IN'
                )                   
            )
        );

echo count (wc_get_products($args));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51035097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档