Woocommerce 获取多供应商订单中的子订单号

问题描述 投票:0回答:3

我在 WordPress 中使用 woocommerce 和 dokan 插件。 当我尝试在多供应商中订购产品后,我在感谢页面中获得了子订单号。 我尝试通过运行下面的代码来获取子订单号,但不起作用。

//example order id
$order = wc_get_order(1234);

$order_id = $order->get_id();

$sub_orders = get_children( 
   array(    
     'post_parent' => $order_id,    
     'post_type'   => 'shop_order',    
     'post_status' => array( 
        'wc-pending', 
        'wc-completed', 
        'wc-processing', 
        'wc-on-hold' 
       )
   ) 
);

当我尝试

var_dump($sub_order)
时,我得到了0个数组结果。 有什么办法可以得到子订单吗?

wordpress woocommerce dokan
3个回答
1
投票

我在插件中发现了这个功能:

/**
 * 
 * @global object $wpdb
 * @param type $parent_order_id
 * @return type
 */
function dokan_get_suborder_ids_by ($parent_order_id){
    
    global $wpdb;
     
     $sql = "SELECT ID FROM " . $wpdb->prefix . "posts
             WHERE post_type = 'shop_order'
             AND post_parent = " . $parent_order_id;
     
     $sub_orders = $wpdb->get_results($sql);

    if ( ! $sub_orders ) {
        return null;
    }
    
    return $sub_orders;

我认为你可以用她来获取子订单,例如:

$order = wc_get_order(1234);

$order_id = $order->get_id();

$sub_orders = dokan_get_suborder_ids_by($order_id);

foreach($sub_orders as $sub_order) {
    $child_order = wc_get_order($sub_order);
    var_dump($child_order);
}

希望能帮到你


0
投票

试试这个:

$parent_order = wc_get_order(1234);

$sub_orders = get_children([
    'post_parent' => dokan_get_prop( $parent_order, 'id' ),
    'post_type'   => 'shop_order',
]);

请注意,如果父订单仅包含来自一个供应商的产品,则您的

$sub_orders
变量将为空。


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