按顺序访问运费

时间:2018-02-28 09:34:12

标签: wordpress woocommerce

客户有非常具体的运输要求,因此我构建了一个完美运行的运输插件。但我需要以特定格式提取所选的送货信息,以便向第三方提供商发送采购订单。

在运输插件中,我按如下方式存储这些值:

$rate1cfree = array(
   'id' => 'shipping_method_courier_free',
   'label' => 'Courier (free)',
   'cost' => '0',
   'calc_tax' => 'per_item',
   'meta_data' => array(
      'delivery_channel' => 'NAT',
      'delivery_service' => 'EXP'
    )
);
$this->add_rate( $rate1cfree );

我在订单完整挂钩中需要的2个元值是'delivery_channel'和'delivery_service'。

现在在我的woocommerce_payment_complete函数中,我可以使用以下方式提取大部分订单数据:

$order = wc_get_order( $order_id );
$order_data = $order->get_data();

问题在于元值如下:

    [shipping_lines] => Array
    (
        [358] => WC_Order_Item_Shipping Object
            (

                [meta_data:protected] => Array
                    (
                        [0] => WC_Meta_Data Object
                            (
                                [current_data:protected] => Array
                                    (
                                        [id] => 2515
                                        [key] => delivery_channel
                                        [value] => NAT
                                    )

                                [data:protected] => Array
                                    (
                                        [id] => 2515
                                        [key] => delivery_channel
                                        [value] => NAT
                                    )

                            )

                        [1] => WC_Meta_Data Object
                            (
                                [current_data:protected] => Array
                                    (
                                        [id] => 2516
                                        [key] => delivery_service
                                        [value] => EXP
                                    )

                                [data:protected] => Array
                                    (
                                        [id] => 2516
                                        [key] => delivery_service
                                        [value] => EXP
                                    )

                            )

                    )

            )

    )

无论我尝试使用哪种方法,我都无法访问这些值。我尝试使用get_post_meta(),get_meta_data(),get_meta()以及几乎任何看起来可以在此页面上提供帮助的内容:https://docs.woocommerce.com/wc-apidocs/class-WC_Data.html

任何帮助都会非常感激,因为我完全陷入困境。 :)

1 个答案:

答案 0 :(得分:0)

好的,我的共同工作英雄解决了它如下:

$order = wc_get_order( $order_id );

foreach( $order->get_items( 'shipping' ) as $item_id => $shipping_item_obj ){
    $shipping_item_data = $shipping_item_obj->get_data();
    $ship_info = $shipping_item_data['meta_data'];
    foreach($ship_info as $ship_key => $ship_value){
        $ship[$ship_key] = $ship_value->get_data();
    }
}

print_r($ship);