Получите данные заказа составного продукта по действию woocommerce_payment_complete - PullRequest
0 голосов
/ 18 сентября 2018

Когда оплачен заказ в 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;

Я не уверен, что делаю неправильно, поэтому любая помощьвысоко ценитсяЗаранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...