Задача:
Нужно получить 15-последних клиентов сделавших заказы в интернет магазине WooCommerce. Конкретно требуется получить последние имена и фамилии клиентов.
Реализуется это следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $query = new WC_Order_Query(array( 'limit' => 15,//Количество записей 'orderby' => 'ID',//Поле для сортировки 'order' => 'DESC',//Направление сортировки 'return' => 'ids',//Что нужно вернуть )); $orders = $query->get_orders();//Резльтат, массив с ИД записей foreach ($orders as $order_id) { $fields=get_post_meta($order_id);//Массив всех мета полей заказа } ?> |
В результате получим при каждой итерации цикла в переменной $fields значения всех мета полей заказа.
Если нужно выбрать конкретное мета-поле заказа, тогда достаточно сделать следующую конструкцию:
1 2 3 |
$field=get_post_meta($order_id,'имя_поля',true); |
true — означает вернуть одиночное значение
Другой способ, если требуется получить значение полей из профилей пользователей, а не из заказа. Принцип тот же, получаем последние заказы, из них извлекаем пользователей и обращаемся к профилю каждого пользователя.
Пример вытаскивания данных о пользователе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php $query = new WC_Order_Query(array( 'limit' => 15, 'orderby' => 'ID', 'order' => 'DESC', 'return' => 'ids', )); $orders = $query->get_orders(); foreach ($orders as $order_id) { $object = new WC_Order($order_id); if (empty($object)) { continue; } $user_name = get_user_meta($object->get_user_id(), 'nickname', true); $billing_first_name = get_user_meta($object->get_user_id(), 'billing_first_name', true); $billing_last_name = get_user_meta($object->get_user_id(), 'billing_last_name', true); $billing_company = get_user_meta($object->get_user_id(), 'billing_company', true); } ?> |
Здесь, мы получаем ИД пользователя из заказа и далее обращаемся через get_user_meta к мета полю конкретного пользователя, что бы получить результат и информацию о пользователю.