【问题标题】:Get orders shipping items details in WooCommerce 3在 WooCommerce 3 中获取订单运送物品的详细信息
【发布时间】:2018-02-16 13:13:11
【问题描述】:

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

例如“flate_rate”。

自从 WooCommerce 3 以来,一切都发生了变化,现在变得很复杂。

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

【问题讨论】:

    标签: php woocommerce orders shipping shipping-method


    【解决方案1】:

    如果您想获取 Order Items Shipping 数据,您首先需要在 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 => $item ){
        $order_item_name             = $item->get_name();
        $order_item_type             = $item->get_type();
        $shipping_method_title       = $item->get_method_title();
        $shipping_method_id          = $item->get_method_id(); // The method ID
        $shipping_method_instance_id = $item->get_instance_id(); // The instance ID
        $shipping_method_total       = $item->get_total();
        $shipping_method_total_tax   = $item->get_total_tax();
        $shipping_method_taxes       = $item->get_taxes();
    }
    

    您还可以在此 foreach 循环中使用 WC_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 => $item ){
        // Get the data in an unprotected array
        $item_data = $item->get_data();
    
        $shipping_data_id           = $item_data['id'];
        $shipping_data_order_id     = $item_data['order_id'];
        $shipping_data_name         = $item_data['name'];
        $shipping_data_method_title = $item_data['method_title'];
        $shipping_data_method_id    = $item_data['method_id'];
        $shipping_data_instance_id  = $item_data['instance_id'];
        $shipping_data_total        = $item_data['total'];
        $shipping_data_total_tax    = $item_data['total_tax'];
        $shipping_data_taxes        = $item_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>';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-28
      • 2018-05-20
      • 2018-01-23
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      相关资源
      最近更新 更多