web-dev-qa-db-ja.com

WooCommerce 3で注文の配送方法の詳細を取得する

注文配送方法ID ....を取得するにはどうすればよいですか?.

たとえば、「flate_rate」。

WooCommerce 3.x.x以降、すべてが変更されたので簡単ではありません。

Foreachループで$order->get_data()で試しましたが、データは保護されています。

8
Konstantinos E.

Order Items Shippingデータを取得する場合は、まずforeachループ(for_'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();
}
_

_WC_Data_ メソッドを使用して、この(保護されておらずアクセス可能な)データの配列を取得することもできます get_data() このforeachループ内:

_$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'];
}
_

終了するには、次の例を使用できます _WC_Abstract_Order_ この例のように、「データの配送」に関連するメソッド:

_// Get an instance of the WC_Order object
$order = wc_get_order(522);

// Return an array of shipping costs within this order.
$order->get_shipping_methods(); // same thing than $order->get_items('shipping')

// Conditional function based on the Order shipping method 
if( $order->has_shipping_method('flat_rate') ) { 

    // Output formatted shipping method title.
    echo '<p>Shipping method name: '. $order->get_shipping_method()) .'</p>';
_
18
LoicTheAztec