获取有关woocommerce_payment_complete操作的复合产品订单数据

时间:2018-09-18 10:24:51

标签: php wordpress woocommerce

在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;

我不确定自己在做什么错,因此我们非常感谢您的帮助。 预先感谢

0 个答案:

没有答案