Как получить список клиентов, которые хотя бы что-то купили, и, если возможно, заказать их по количеству заказов?Из того, что я понял, _order_count
мета-ключ существует, и для него задан номер заказа, размещенный как целое число, если они разместили заказ.
Этот запрос игнорирует количество заказов и просто показывает всех пользователей.
$args = array(
'role' => 'customer',
'number' => -1,
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_query' => array(
array(
'key' => '_order_count',
'value' => array(''),
'compare' => 'NOT IN'
)
)
);
$query = new WP_User_Query($args);
Это таблица, которая будет отображать информацию о том, сколько пользователь потратил и сколько заказов он разместил
<?php if (! empty($query->get_results())) : ?>
<table class="table">
<thead>
<tr>
<th data-sort="string">Name</th>
<th data-sort="string">Email</th>
<th data-sort="float">Total spent (<?php echo get_option('woocommerce_currency'); ?>)</th>
<th data-sort="int">Order placed</th>
</tr>
</thead>
<tbody>
<?php foreach ($query->get_results() as $user) : ?>
<?php $customer = new WP_User($user->ID); ?>
<tr>
<td><?php echo $user->display_name; ?></td>
<td><?php echo $user->user_email; ?></td>
<td><?php echo wc_get_customer_total_spent($user->ID); ?></td>
<td>
<?php
$customer_orders = get_posts(array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $user->ID,
'post_type' => wc_get_order_types(),
'post_status' => array('wc-pending', 'wc-processing', 'wc-completed') //array_keys(wc_get_order_statuses()),
));
echo count($customer_orders);
?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>