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

时间:2021-02-08 03:47:02

标签: wordpress woocommerce dokan

我在 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 数组结果。 有什么办法可以得到子订单?

2 个答案:

答案 0 :(得分: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 变量将为空。

答案 1 :(得分:0)

我在插件中找到了这个功能:

/**
 * 
 * @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);
}

希望能帮到你