我正在尝试通过WC获取订单来查询最高客户总订单数,但似乎无法通过wc_get_orders获得该信息。希望有人可以指导我。这是我在代码段中的尝试,但是它只是返回每个客户的销售总数,而没有按从最高到最低的顺序进行排序。
$i = 0;
foreach ($customer_ids as $customer_id) :
$customer = new WP_User($customer_id);
$args = array(
'status' => 'completed',
'customer_id' => $customer_id,
'limit' => '-1',
);
$orders = wc_get_orders( $args );
update_option( '_gpdebug_contributor_list_d',$orders );
?>
<?php
$i++;
if (!empty($orders)) : ?>
<tr>
<td><?php echo $i; ?></td>
<td><?php $bp_name = bp_core_get_userlink( $customer_id ); ?><?php echo get_avatar($customer_id, 30) . $bp_name;
if ( $i == 1 ) {
echo '<span class="ion-trophy gold"></span>';
} elseif ( $i == 2 ) {
echo '<span class="ion-trophy silver"></span>';
} elseif ( $i == 3 ) {
echo '<span class="ion-trophy bronze"></span>';
}
?></td>
<td style="text-align: right;">
<?php
$total = 0;
foreach ( $orders as $order ) {
$customer_order = wc_get_order( $order );
$total += $customer_order->get_total();
}
echo $total;
谢谢。
答案 0 :(得分:1)
我了解您已经获得每个客户的订单总数。这将需要对代码进行一些更改,但是我认为您可以轻松地对其进行修改。
创建一个数组
$customer_totals = array();
然后插入每个客户ID作为关键字,并插入该客户的订单总数作为值(*),
$temp_arr = array($customer_id => $total);
$customer_totals =array_merge($customer_totals , $temp_arr);
在插入所有客户ID和总数后,按降序(**)对最终数组进行排序,
arsort($customer_totals);
现在,您可以根据需要显示总计。我希望这有帮助。如果有任何问题,请通过更新代码告知我。