如何计算从周五到周五每周售出多少产品

Posted

技术标签:

【中文标题】如何计算从周五到周五每周售出多少产品【英文标题】:How to count how many products were sold each week from Friday to Friday 【发布时间】:2020-05-06 09:05:55 【问题描述】:

我试着计算从周五到周五每周售出的产品数量。 我尝试使用 meta_key total_sales,但它显示了售出的产品总量。 我想创建一份报告,显示一周内售出的产品和数量。 我想指定产品的名称和每个示例的销售单位数量: 黄油 20 已售出 面包 B 20 已售出 等等

        $sql_total_sold=("SELECT p.post_title as product, pm.meta_value as total_sales FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS pm ON (p.ID = pm.post_id AND pm.meta_key LIKE 'total_sales') WHERE pm.meta_value >0 AND p.post_type LIKE 'product' AND p.post_status LIKE 'publish'");
        $results = $wpdb->get_results($sql_total_sold);
        $counter=0;
        foreach($results as $result)
            $counter++;
            echo $counter.' Product name :  '.$result->product.'quantity'. $result->total_sales .'</br>';
        

【问题讨论】:

您是否尝试在 SQL 查询中使用日期过滤表达式?像这样:AND p.sale_date >= $dateFrom AND p.sale_date 不幸的是,total_sales 肯定不适用于日期,因为它计算所有销售额,而不是将它们划分为日期范围。我可能应该从日期期间接受个别订单并以某种方式计算数量,但我不知道该怎么做 【参考方案1】:

显示上周总销售额(售出的产品数量)

add_action( 'woocommerce_single_product_summary', 'wc_product_sold_count_last_week', 11 );

function wc_product_sold_count_last_week() 

   //  Get last week orders
   $all_orders = wc_get_orders(
      array(
         'limit' => -1,
         'status' => array_map( 'wc_get_order_status_name', wc_get_is_paid_statuses() ),
         'date_after' => date( 'Y-m-d', strtotime( '-1 week' ) ),
         'return' => 'ids',
      )
   );

   // Sum quantities purchased

   $count = 0;
   $produt_sale_list = array();
   foreach ( $all_orders as $all_order ) 
      $order = wc_get_order( $all_order );
      $items = $order->get_items();
      foreach ( $items as $item ) 

            $produt_sale_list[$item->get_name()][] = $item['qty'];
            $count = $count + absint( $item['qty'] ); 

      
   

   foreach ( $produt_sale_list as $produt_sold => $value ) 
       echo "<p>$produt_sold sold: ".array_sum($value)."</p>";

   
   if ( $count > 0 ) echo "<p>Recent sales: $count</p>";

【讨论】:

它显示了总销售额,没有细分为单个产品,我的意思是产品 A 售出 10 个产品 B 售出 20 个等 是的,它工作得几乎完美。我有一个多供应商商店,由 yith 多供应商插件创建,我想为每个销售过的卖家介绍这样一个部门【参考方案2】:

尝试将您的查询更改为:

SELECT 
    p.post_title AS product, SUM(pm.meta_value) AS total_sales
FROM
    $wpdb->posts AS p
        LEFT JOIN
    $wpdb->postmeta AS pm ON (p.ID = pm.post_id
        AND pm.meta_key LIKE 'total_sales')
WHERE
    pm.meta_value > 0
        AND p.post_type LIKE 'product'
        AND p.post_status LIKE 'publish'
GROUP BY UNIX_TIMESTAMP(p.sale_date) DIV 604800, product

但我不确定它是否会在夏季正常工作。

【讨论】:

以上是关于如何计算从周五到周五每周售出多少产品的主要内容,如果未能解决你的问题,请参考以下文章

2016第51周五产品经理的十大错误

《参与感》----产品篇

周五和周六的 UILocalNotification

MySQL多个条件以什么表当做主条件表_20161111周五

27周末吃什么(每周五自动爬取下厨房本周最受欢迎的菜谱)

PowerShell 从本周五开始获得 12 个月的周五