WC Получить заказы с сортировкой по наибольшему общему количеству заказов - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь получить запрос на наибольшее количество заказов клиентов через 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 голосов
/ 31 октября 2019

Я понимаю, что вы уже получаете суммы заказов для каждого клиента. Это потребует некоторых изменений в вашем коде, но я думаю, что вы можете легко изменить его.

Создать массив,

$customer_totals = array();

Затем вставьте каждый идентификатор клиента в качестве ключа и общее количество заказов для этого клиента. в качестве значения (*),

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

После вставки всех идентификаторов и итогов клиентов сортируйте окончательный массив в порядке убывания (**),

arsort($customer_totals);

Теперь вы можете отобразитьитоги, как вы хотите. Надеюсь, это поможет. Пожалуйста, сообщите мне, если у вас возникли проблемы с обновлением кода.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...