Wordpress - Woocommerce - 检索特定产品的订单

时间:2014-09-21 21:43:08

标签: php wordpress woocommerce

我正在使用woocommerce wordpress插件,我使用WC_Order类检索了所有订单的列表。 WC_Order documentation

这会返回有关ID,日期和状态等订单的简单信息,但我需要知道客户购买的产品。

到目前为止,我的工作代码是:

$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;

$all_order_data = array();

foreach ($customer_orders as $customer_order) {
    $order = new WC_Order();
    $order->populate($customer_order);
    $orderdata = (array) $order;
    $all_order_data[] = $orderdata;
}

为了便于查看数据,我将其输出为json:

echo json_encode($all_order_data);

但是,我需要能够查看每个订单所购买的产品。我找不到办法做到这一点,我没有在网上看到有关实现此功能的任何内容。同样,如果可能,检索附加到产品的订单对我来说也非常重要。

以前有人这样做过吗?或者任何人都可以指出我正确的方向?

2 个答案:

答案 0 :(得分:0)

您可以使用订单对象上的get_items()方法查看订单中的商品。在我的示例中,$all_order_data将是在查询的订单中购买的所有商品的数组。

$customer_orders = new WP_Query($args);

$all_order_data = array();

while ($customer_orders->have_posts() ){
    $customer_orders->the_post();) {
    $order = new WC_Order();
    $all_order_data[] = $order->get_items();
}

wp_reset_postdata();

答案 1 :(得分:0)

@helgatheviking在正确的轨道上,但她的示例代码没有编译。您需要做的就是替换

$orderdata = (array) $order;
$all_order_data[] = $orderdata;

$all_order_data[] = $order->get_items();

希望这有帮助!