Как посчитать, сколько товаров было продано каждую неделю с пятницы по пятницу - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь подсчитать, сколько товаров было продано каждую неделю с пятницы по пятницу. Я пытаюсь использовать meta_key total_sales, но он показывает общее количество проданных товаров. Я хочу создать отчет, который показывает, какие продукты и сколько были проданы за неделю. Я хотел указать название продукта и количество проданных единиц для каждого примера: Масло 20 продано, Хлеб B 20 продано и т. Д. c

        $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>';
        }

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Попробуйте изменить свой запрос на что-то вроде:

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

Но я не уверен, правильно ли он будет работать с летним временем.

1 голос
/ 06 мая 2020

Отображение общих продаж за последнюю неделю (количество проданных товаров)

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>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...