问题描述
我在 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 数组结果。
有什么办法可以得到子订单?
解决方法
试试这个:
$parent_order = wc_get_order(1234);
$sub_orders = get_children([
'post_parent' => dokan_get_prop( $parent_order,'id' ),'post_type' => 'shop_order',]);
请注意,如果父订单仅包含来自一个供应商的产品,则您的 $sub_orders
变量将为空。
我在插件中找到了这个功能:
/**
*
* @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);
}
希望能帮到你