Woocommerce - php для получения информации о заказе

11

Я пытаюсь получить данные, связанные с заказом на плагине woocommerce (wordpress). В настоящее время я написал свой собственный плагин, содержащий код:

<?php 
global $woocommerce;
$order = new WC_Order($order_id);
$order_shipping_total = $order->get_shipping();
echo $order_shipping_total;
?>

Это просто проверить это, я не верю, что это работает. Но мне действительно нужно получить список заказов с определенным статусом заказа, а затем получить доступ к полям (например, имя) для каждого заказа в этом списке. Как мне это сделать? Кроме того, какие файлы я должен включить, чтобы сделать эту работу? Файл class-wc-order()?

Теги:
woocommerce

2 ответа

23
Лучший ответ

Недавно я работал для экспорта данных заказов в XML.

$args = array(
  'post_type' => 'shop_order',
  'post_status' => 'publish',
  'meta_key' => '_customer_user',
  'posts_per_page' => '-1'
);
$my_query = new WP_Query($args);

$customer_orders = $my_query->posts;

foreach ($customer_orders as $customer_order) {
 $order = new WC_Order();

 $order->populate($customer_order);
 $orderdata = (array) $order;

 // $orderdata Array will have Information. for e.g Shippin firstname, Lastname, Address ... and MUCH more.... Just enjoy!
}
  • 0
    Это хорошо и работает нормально, но я хочу получить отдельные поля продукта, такие как электронная почта покупателя и время, как я могу просто показать электронную почту и время для конкретного идентификатора продукта. благодарю вас
  • 0
    Не могли бы вы посмотреть здесь? Пожалуйста, я использовал ваш код, но я хочу получить некоторые детали в зависимости от идентификатора продукта здесь вопрос
2

Чтобы отфильтровать заказы для конкретного клиента, используйте дополнительный аргумент meta_value:

$user_id = get_current_user_id();
$args = array(
  'post_type' => 'shop_order',
  'post_status' => 'publish',
  'meta_key' => '_customer_user',
  'meta_value' => $user_id,
  'numberposts' => -1, // -1 for all orders
  'posts_per_page' => '-1'
);
$my_query = new WP_Query($args);

Также альтернативный способ загрузки заказов для конкретного клиента:

$orders = get_posts( apply_filters( 'woocommerce_my_account_my_orders_query', array(
    'numberposts' => 1, // -1 for all orders
    'meta_key'    => '_customer_user',
    'meta_value'  => $user_id,
    'post_type'   => 'shop_order',
    'post_status' => 'publish'
) ) );

См. также здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню