【问题标题】:Woocommerce order by seller name or author name卖家姓名或作者姓名的 Woocommerce 订单
【发布时间】:2017-07-19 10:48:45
【问题描述】:

我有以下代码,我需要根据卖家 ID 或卖家名称显示订单数据:

$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(或卖家姓名)上显示订单详情?

谢谢

【问题讨论】:

  • 您好,欢迎来到 SO!请澄清您的问题,以使其对每个人都尽可能简单明了。也许你可能对this documentation感兴趣。

标签: php wordpress woocommerce invoice orders


【解决方案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

【讨论】:

  • 对不起,我的输出是零。
  • 其实我需要根据卖家id获取订单。这里是 post_author 字段。
  • @NavasFazil 我知道并且我已经理解了。我总是在回答之前测试我的代码,它只适用于post_author ID……尝试用与此WP_Query 中的一个卖家 ID 对应的数字替换 $seller_id,你会发现它是有效的。此外,您还必须进入 wp_post 表中的数据库,以确保使用相关 post_type 的正确卖家 ID 为 post_author 列设置为 shop_order...
猜你喜欢
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2021-02-27
  • 1970-01-01
相关资源
最近更新 更多