WP_Query和WooCommerce订单处于待定状态问题

问题描述 投票:2回答:2

我无法获得状态为wc-pending / Pending Payment的订单对象。它只返回所有订单对象:

$my_course_query = new WP_Query( array(
    'post_type'     => 'shop_order',
    'post_status'   => 'wc-pending',
    'posts_per_page'      => -1
) );
php wordpress woocommerce foreach orders
2个回答
5
投票

你的代码正如预期的那样完美地工作,在前端,我测试了它,它只输出具有**挂起状态的订单。所以我不知道你的问题是什么,因为你的问题不详细。

我在WordPress WP_Query reference上找到了这个可能有用的注释: 注意:Ticket #18408要查询admin中的帖子,请考虑使用get_posts(),因为wp_reset_postdata()可能无法按预期运行。

一般情况下,我不使用WP_Query()作为客户订单,但wc_get_orders()(或get_posts())也是这样:

$customer_orders = wc_get_orders( array(
    'limit'    => -1,
    'status'   => 'pending'
) );

// Iterating through each Order with pending status
foreach ( $customer_orders as $order ) {

    // Going through each current customer order items
    foreach($order->get_items() as $item_id => $item_values){
        $product_id = $item_values['product_id']; // product ID

        // Order Item meta data
        $item_meta_data = wc_get_order_item_meta( $item_id );

        // Some output
        echo '<p>Line total for '.wc_get_order_item_meta( $item_id, '_line_total', true ).'</p><br>';
    }
}

这也适用于获取订单对象。

相关文档:wc_get_orders and WC_Order_Query


0
投票

我通过简单地使用自定义查询修复了这个奇怪的问题。

以某种方式添加'post_status' => 'wc-pending'实际上并没有改变查询,但如果我使用'post_status' => 'pending',查询会更改。

所以我所做的是使用该自定义查询并将pending修改为wc-pending

© www.soinside.com 2019 - 2024. All rights reserved.