在WooCommerce 3中获取订单运送物品的详细信息

问题描述 投票:8回答:1

如何获得订单运送方式ID。?

例如'flate_rate'。

自WooCommerce 3.x.x以来,一切都变了,这并不容易。

我已经在foreach循环中使用$order->get_data()进行了尝试,但是数据受到保护。

php wordpress woocommerce shipping orders
1个回答
21
投票

如果要获取订购商品的运输数据,首先需要将它们放入foreach循环中(用于'shipping'物品类型,并使用WC_Order_Item_Shipping方法访问数据

$order_id = 528; // For example

// An instance of 
$order = wc_get_order($order_id);

// Iterating through order shipping items
foreach( $order->get_items( 'shipping' ) as $item_id => $shipping_item_obj ){
    $order_item_name             = $shipping_item_obj->get_name();
    $order_item_type             = $shipping_item_obj->get_type();
    $shipping_method_title       = $shipping_item_obj->get_method_title();
    $shipping_method_id          = $shipping_item_obj->get_method_id(); // The method ID
    $shipping_method_instance_id = $shipping_item_obj->get_instance_id(); // The instance ID
    $shipping_method_total       = $shipping_item_obj->get_total();
    $shipping_method_total_tax   = $shipping_item_obj->get_total_tax();
    $shipping_method_taxes       = $shipping_item_obj->get_taxes();
}

您还可以在此foreach循环中使用WC_Data方法WC_Data获得此(不受保护和可访问的)数据的数组:

get_data()

要完成此操作,可以使用与“运输数据”相关的以下get_data()方法,如本例所示:

$order_id = 528; // For example

// An instance of 
$order = wc_get_order($order_id);

// Iterating through order shipping items
foreach( $order->get_items( 'shipping' ) as $item_id => $shipping_item_obj ){
    // Get the data in an unprotected array
    $shipping_item_data = $shipping_item_obj->get_data();

    $shipping_data_id           = $shipping_data['id'];
    $shipping_data_order_id     = $shipping_data['order_id'];
    $shipping_data_name         = $shipping_data['name'];
    $shipping_data_method_title = $shipping_data['method_title'];
    $shipping_data_method_id    = $shipping_data['method_id'];
    $shipping_data_instance_id  = $shipping_data['instance_id'];
    $shipping_data_total        = $shipping_data['total'];
    $shipping_data_total_tax    = $shipping_data['total_tax'];
    $shipping_data_taxes        = $shipping_data['taxes'];
}
© www.soinside.com 2019 - 2024. All rights reserved.