WC获取按最高订单总数排序的订单

时间:2019-10-31 02:48:20

标签: woocommerce

我正在尝试通过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;

谢谢。

1 个答案:

答案 0 :(得分:1)

我了解您已经获得每个客户的订单总数。这将需要对代码进行一些更改,但是我认为您可以轻松地对其进行修改。

创建一个数组

$customer_totals = array();

然后插入每个客户ID作为关键字,并插入该客户的订单总数作为值(*),

$temp_arr = array($customer_id => $total);
$customer_totals =array_merge($customer_totals , $temp_arr);

在插入所有客户ID和总数后,按降序(**)对最终数组进行排序,

arsort($customer_totals);

现在,您可以根据需要显示总计。我希望这有帮助。如果有任何问题,请通过更新代码告知我。

* https://stackoverflow.com/a/9735696

** https://www.w3schools.com/php/func_array_arsort.asp