Когда оплачен заказ в 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;
Я не уверен, что делаю неправильно, поэтому любая помощьвысоко ценитсяЗаранее спасибо