客户有非常具体的运输要求,因此我构建了一个完美运行的运输插件。但我需要以特定格式提取所选的送货信息,以便向第三方提供商发送采购订单。
在运输插件中,我按如下方式存储这些值:
$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
任何帮助都会非常感激,因为我完全陷入困境。 :)
答案 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);