2017-07-19 86 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