gpt4 book ai didi

wordpress - 计算 Woocommerce 中每个订单状态的不同订单状态计数和总现金

转载 作者:行者123 更新时间:2023-12-04 23:41:47 24 4
gpt4 key购买 nike

我需要在 woocommerce 查询中获得几天之间不同状态的订单总数。为了让它在某一天之间循环所有订单,我使用以下查询:

$args = array(
'post_type' => 'shop_order',
'post_status' => 'publish',
'posts_per_page' => -1,

'date_query' => array(
array(
'after' => array(
'year' => 2016,
'month' =>01,
'day' =>01,
),
'before' => array(
'year' => 2016,
'month' => 01,
'day' =>30,
),
'inclusive' => true,
),
),

);
$loop=new WP_Query($args);

通过使用此代码,我可以遍历所有查询并正确获取详细信息。
现在我需要将详细信息转换为以下格式

wc-shipped : Total order -> 10 total_cash -> 300$
wc- completed : Totla order -> 34 total_cash -> 4580$
wc-cancelled : Total order -> 12 total_cash -> 100$



如何以这种格式获取此详细信息?

我知道如何获取 wc-shipped : Total order -> 10
为此,我使用:
$order_status_get[]=$order->post_status;

$order_status_get= array_count_values($order_status_get);
foreach ($order_status_get as $key => $value) {
echo $key.'->'.$value;
}

但我也需要价格。为了获得价格,我可以使用 $order_total_array[]=$order->get_total();
但我不知道如何组合它们并以所需的格式获得结果。

最佳答案

我会根据你的问题给出一个解决方案。

$order = new WC_Order('your order id ');

在你的情况下
while($loop->have_posts()): $loop->the_post(); 
$order_id=get_the_ID();
$order = new WC_Order($order_id);

(1) 从订单中获取订单状态我们可以使用 $order->post_status
(2) 要获得订单总数,我们可以使用 $order->get_total()
您可以组合它们并将其存储在一个数组中
 $order_status_array[]=$order->post_status .'*'.$order->get_total();

在这里我结合使用 * ,您可以使用自己的。

这样输出数组就像
Array ( [0] => wc-cancelled*64 [1] => wc-cancelled*254 [2] =>wc-cancelled*93 [3] => wc-cancelled*44 [4] => wc-cancelled*213 [5] => wc-cancelled*44)
然后使用以下代码以正确的格式排列这个数组
$new_array = [];

foreach($order_status_array as $key => $value) {
list($name, $val) = explode('*', $value);
if(array_key_exists($name, $new_array)) {
$new_array[$name]['total_cash'] += $val;
$new_array[$name]['total_order']++;
} else {
$new_array[$name]['total_cash'] = $val;
$new_array[$name]['total_order'] = 1;
}
}

现在你的数组已经准备好了,就像
Array(
[wc-cancelled] => Array(
[total_cash] => ...
[total_order] =>...
)
...
)

现在使用以下代码
 foreach ($new_array as $l=>$m){
echo $l.'Total Order:->'.$m['total_order'] .'Total Cash:->'.$m['total_cash'].'</br>';
}

.这将起作用。您也可以使用其他好的解决方案。尝试这个 。

所以整个代码是
 while($loop->have_posts()): $loop->the_post(); 
$order_id=get_the_ID();
$order = new WC_Order($order_id);
$order_status_array[]=$order->post_status .'*'.$order->get_total();
endwhile;

$new_array = [];
foreach($order_status_array as $key => $value) {
list($name, $val) = explode('*', $value);
if(array_key_exists($name, $new_array)) {
$new_array[$name]['total_cash'] += $val;
$new_array[$name]['total_order']++;
} else {
$new_array[$name]['total_cash'] = $val;
$new_array[$name]['total_order'] = 1;
}
}

foreach ($new_array as $l=>$m){

echo $l.'Total Order:->'.$m['total_order'] .'Total Cash:->'.$m['total_cash'].'</br>';
}

关于wordpress - 计算 Woocommerce 中每个订单状态的不同订单状态计数和总现金,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35197579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com