2017-07-19 42 views
2

我有以下代码和我需要基于卖方ID或卖方名称,以显示顺序的数据:Woocommerce为了通过卖方名字或作者的名字

$filters = array(
    'post_status' => 'published', 
    'post_type' => 'shop_order', 
    'posts_per_page' => 200, 
    'paged' => 1, 
    'orderby' => 'modified', 
    'order' => 'ASC', 
    'author' => $seller_id, 
    'post_parent' => $order_id 
); 
$loop = new WP_Query($filters); 
while ($loop->have_posts()) { 
    $loop->the_post(); 
    $order = new WC_Order($loop->post->ID); 
    foreach ($order->get_items() as $key => $item) 
    { 
     $red = $item['product_id']; 
     $_sku  = get_post_meta($red, '_sku', true); 
    } 
} 

上述环没有显示在任何SKU或价格发票部分。

如何在作者ID(或卖家姓名)上显示订单详细信息?

感谢

+0

您好,欢迎SO!请澄清您的问题,尽量减少对每个人的影响。也许您可能对[本文档]感兴趣(https://stackoverflow.com/help/how-to-ask)。 –

回答

1

你的主要问题是post_status这里:WooCommerce订单 “上发表” post_status不存在。对于WooCommerce订单可用的状态是,例如:

  • 'wc-cancelled'
  • 'wc-completed'
  • 'wc-custom-status'
  • 'wc-on-hold'
  • 'wc-pending'
  • 'wc-processing'
  • 'wc-refunded'

可以具有以阵列不同的顺序状态...

另外'post_parent'是不能是订单ID,因为它总是具有0

要因为WooCommerce 3完成+订单商品现在是一个WC_Order_Item_Product对象(并且您需要使用可用的方法来访问属性值)。

最后一件事,要从用户名中获取用户ID,可以使用WordPress功能get_user_by()

所以,你的代码将是:

$args = array(
    'post_status' => array('wc-completed'), // <=== HERE 
    'post_type' => 'shop_order', 
    'posts_per_page' => 200, 
    'paged' => 1, 
    'orderby' => 'modified', 
    'author' => $seller_id 
); 

$loop = new WP_Query($args); 

while ($loop->have_posts()) { 
    $loop->the_post(); 
    $order_obj = wc_get_order($loop->post->ID); 
    foreach ($order_obj->get_items() as $item_id => $item_obj) 
    { 
     $item_data = $item_obj->get_data(); // Accessing WC_Order_Item_Product object protected data 
     $product_id = $item_data['product_id']; // Product ID 
     $product_sku = get_post_meta($product_id, '_sku', true); // SKU 

     // Just for Testing output 
     echo "Product ID is $product_id - Sku is $product_sku<br>"; 
    } 
} 

此代码测试,适用于WooCommerce 3+


有用的答案:How to get WooCommerce order details

+0

对不起,我输出为零。 –

+0

其实我需要根据卖家ID得到订单。这里是post_author字段。 –

+0

@NavasFazil我知道,我已经明白了。我在回答之前总是测试我的代码,它只是与'post_author' ID一起工作......尝试用'WP_Query'中与您的某个销售商ID相对应的数字替换'$ seller_id',您将看到该工作正常。您必须在wp_post表中的数据库中进入,以确保'p​​ost_author'列的相关'post_type'的卖家ID设置为'shop_order' ... – LoicTheAztec