gpt4 book ai didi

php - 在 WooCommerce 3 中获取订单项目和 WC_Order_Item_Product

转载 作者:IT王子 更新时间:2023-10-29 00:16:16 25 4
gpt4 key购买 nike

阅读 WooCommerce 3.0 中的更改,似乎不再可能直接从订单项目中获取属性,因此我认为需要更改以下代码,因为它会吐出一个错误:

$order_item_id = 15;
$order_item = new WC_Order_Item_Product($order_item_id);
$return = $order_item->get_id() ? $order_item : false;

但是,令人尴尬的是,我不确定如何更改此代码以在不再具有构造的此类的最新版本中使用正确的新 getter 和 setter 函数。如何正确执行此操作?我没有看到任何 get 函数以与上述相同的方式获取订单项。
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html

也许我在这里忽略了什么?

最佳答案

If you use the get_id() method, you get your item ID which is 15 in your code.

获取产品ID:
获取产品 ID 的正确 WC_Order_Item_Product 方法是:get_product_id()

获取变体ID:
获取变体 ID 的正确 WC_Order_Item_Product 方法是:get_variation_id()

获取订单ID
获取订单 ID 的正确 WC_Order_Item_Product 方法是:get_order_id()

获取WC_Product对象
获取 WC_Product 对象的正确 WC_Order_Item_Product 方法是:get_product()

获取WC_Order对象
获取 WC_order 对象的正确 WC_Order_Item_Product 方法是:get_order()

使用 WC_Data 获取和取消保护数据和元数据方法:

  • get_data()
  • get_meta_data()

从订单商品 ID 获取 WC_Product 对象:

$order_item_id = 15;
$item = new WC_Order_Item_Product($order_item_id);

// The product ID
$product_id = $item->get_product_id();

// The variation ID
$variation_id = $item->get_variation_id();

// The WC_Product object
$product = $item->get_product();

// The quantity
$quantity = $item->get_quantity();

// The order ID
$order_id = $item->get_order_id();

// The WC_Order object
$order = $item->get_order();

// The item ID
$item_id = $item->get_id(); // which is your $order_item_id

// The product name
$product_name = $item->get_name(); // … OR: $product->get_name();

// Get the product SKU (using WC_Product method)
$sku = $product->get_sku();

// Get line item totals (non discounted)
$total = $item->get_subtotal(); // Total without tax (non discounted)
$total_tax = $item->get_subtotal_tax(); // Total tax (non discounted)

// Get line item totals (discounted when a coupon is applied)
$total = $item->get_total(); // Total without tax (discounted)
$total_tax = $item->get_total_tax(); // Total tax (discounted)

WC_Order 对象中获取订单商品 (并使用 WC_product 对象):

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){
//Get the product ID
$product_id = $item->get_product_id();

//Get the variation ID
$variation_id = $item->get_variation_id();

//Get the WC_Product object
$product = $item->get_product();

// The quantity
$quantity = $item->get_quantity();

// The product name
$product_name = $item->get_name(); // … OR: $product->get_name();

//Get the product SKU (using WC_Product method)
$sku = $product->get_sku();

// Get line item totals (non discounted)
$total = $item->get_subtotal(); // Total without tax (non discounted)
$total_tax = $item->get_subtotal_tax(); // Total tax (non discounted)

// Get line item totals (discounted when a coupon is applied)
$total = $item->get_total(); // Total without tax (discounted)
$total_tax = $item->get_total_tax(); // Total tax (discounted)
}

###访问数据和自定义元数据:

1).取消保护 WC_Order_Item_Product 数据 和自定义元数据:

您可以使用所有 WC_Order_Item_Product data方法,或者您可以使用 WC_Data 取消保护数据以下方法:

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){

// Get the common data in an array:
$item_product_data_array = $item->get_data();

// Get the special meta data in an array:
$item_product_meta_data_array = $item->get_meta_data();

// Get the specific meta data from a meta_key:
$meta_value = $item->get_meta( 'custom_meta_key', true );

// Get all additional meta data (formatted in an unprotected array)
$formatted_meta_data = $item->get_formatted_meta_data( ' ', true );


// Get line item totals (non discounted)
$total = $item->get_subtotal(); // Total without tax (non discounted)
$total_tax = $item->get_subtotal_tax(); // Total tax (non discounted)

// Get line item totals (discounted when a coupon is applied)
$total = $item->get_total(); // Total without tax (discounted)
$total_tax = $item->get_total_tax(); // Total tax (discounted)
}

2).数组访问仍然可以(为了与旧数组向后兼容)直接获取公共(public)数据:

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){


$product_id = $item['product_id']; // Get the product ID
$variation_id = $item['variation_id']; // Get the variation ID

$product_name = $item['name']; // The product name
$item_qty = $item['quantity']; // The quantity

// Get line item totals (non discounted)
$line_total = $item['subtotal']; // or $item['line_subtotal'] -- The line item non discounted total
$line_total_tax = $item['subtotal_tax']; // or $item['line_subtotal_tax'] -- The line item non discounted tax total

// Get line item totals (discounted)
$line_total2 = $item['total']; // or $item['line_total'] -- The line item non discounted total
$line_total_tax2 = $item['total_tax']; // The line item non discounted tax total

// And so on ……
}

作为引用:

关于php - 在 WooCommerce 3 中获取订单项目和 WC_Order_Item_Product,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45706007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com