在woocommerce中的订单付款后,我正在将订单数据发送到外部api。当订单中有复合产品时,会发生我的问题。
当前,当复合产品处于订单状态时,向api发送的所有信息都是复合产品本身的标识符。
我要做的是检查订单商品是否为复合产品,如果是,请获取复合产品子级的sku和数量,并将其添加到保存json数据的数组中。
$order = wc_get_order( $order_id );
$orderlines_body = array();
foreach ($order->get_items() as $item_key => $item_values):
$item_data = $item_values->get_data();
$_woo_product = wc_get_product( $item_values['product_id'] );
//Check if order item is composite product
$composit_prod_order_item = wc_cp_is_composited_order_item( $item_values, $order );
$product_variation_id = $item_values['variation_id'];
if($product_variation_id){
$product_sku = get_post_meta( $item_values['variation_id'], '_sku', true );
$order_line = array(
"Quantity" => $item_data['quantity'],
"ArticleNumber" => $product_sku
);
array_push($orderlines_body, $order_line);
// --This is where the problem resides, I think--
}elseif ($composit_prod_order_item){
$composit_prod_child_items = wc_cp_get_composited_order_items( $item_values, $order, true );
foreach ($composit_prod_child_items as $kids){
$cp_prod_meta_fields = wc_get_product( $kids );
$product_sku = $cp_prod_meta_fields->get_sku();
$order_line = array(
"Quantity" => $item_data['quantity'],
"ArticleNumber" => $product_sku
);
array_push($orderlines_body, $order_line);
}
}else{
$product_sku = $_woo_product->get_sku();
$order_line = array(
"Quantity" => $item_data['quantity'],
"ArticleNumber" => $product_sku
);
array_push($orderlines_body, $order_line);
}
endforeach;
我不确定自己在做什么错,因此我们非常感谢您的帮助。 预先感谢