代码之家  ›  专栏  ›  技术社区  ›  Navas Fazil

按卖家姓名或作者姓名列出的商业订单

  •  2
  • Navas Fazil  · 技术社区  · 7 年前

    $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或价格。

    1 回复  |  直到 7 年前
        1
  •  1
  •   LoicTheAztec    7 年前

    你的主要问题是 post_status 此处:对于WooCommerce订单,“已发布”post_状态不存在。WooCommerce订单的可用状态为:

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

    而且 'post_parent' 0 价值

    由于WooCommerce 3+Order items现在是WC\u Order\u Item\u Product对象(您需要使用可用的方法访问属性值)。

    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>";
        }
    }
    


    How to get WooCommerce order details