在 WooCommerce 3 中获取订单商品和 WC_Order_Item_Product
阅读 WooCommerce 3.0 中的更改,似乎无法再直接从订单项目中获取属性,所以我假设需要更改以下代码,因为它会吐出一个错误:
Reading up the changes in WooCommerce 3.0, it seems that is not possible to anymore properties from order items directly, so I would assume that the following code needs to be changed, since it is spitting out an error:
$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
But, embarrassingly, I'm not sure how to change this code to use the correct new getter and setter functions in the newest version of this class, which no longer has a construct. How to do this properly? I don't see any get
function on getting the order item in the same way as the above.
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html
也许我在这里忽略了一些东西?
Maybe I am overlooking something here?
推荐答案
如果您使用
get_id()
方法,您将获得您的项目 ID,即15
在您的代码.
If you use the
get_id()
method, you get your item ID which is15
in your code.
获取产品 ID:
获取产品 ID 的正确 WC_Order_Item_Product
方法是:get_product_id()
Get the product ID:
The correct WC_Order_Item_Product
method to get the Product Id is: get_product_id()
获取变体 ID:
获取变体 ID 的正确 WC_Order_Item_Product
方法是:get_variation_id()
Get the variation ID:
The correct WC_Order_Item_Product
method to get the variation Id is: get_variation_id()
获取订单 ID
获取订单 ID 的正确 WC_Order_Item_Product
方法是:get_order_id()
Get the order ID
The correct WC_Order_Item_Product
method to get the Order Id is: get_order_id()
获取 WC_Product 对象
获取 WC_Product
对象的正确 WC_Order_Item_Product
方法是:get_product()
Get the WC_Product object
The correct WC_Order_Item_Product
method to get WC_Product
object is:
get_product()
获取 WC_Order 对象
获取 WC_order
对象的正确 WC_Order_Item_Product
方法是:get_order()
Get the WC_Order object
The correct WC_Order_Item_Product
method to get WC_order
object is:
get_order()
使用 ">WC_Data
方法:
get_data()
get_meta_data()
从订单商品 ID 中获取 WC_Product
对象:
Get The WC_Product
object from the order item ID:
$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
对象):
Get the order items from the WC_Order
object (and use the WC_product
Object):
$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)
}
###访问数据和自定义元数据:
###Accessing data and custom meta data:
1).取消保护 WC_Order_Item_Product
数据 和自定义元数据:
1). Unprotecting WC_Order_Item_Product
data and custom meta data:
您可以使用所有 WC_Order_Item_Product 数据
方法,或者您可以使用 取消保护数据WC_Data
以下方法:
You can use all WC_Order_Item_Product data
methods or you can unprotect the data using WC_Data
following methods:
$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).数组访问仍然可以(为了向后兼容遗留数组)直接获取公共数据:
2). The Array Access is still possible (for backwards compatibility with legacy arrays) to get the common data directly:
$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 ……
}
作为参考:
As reference:
- 获取元数据在 woocommerce 3 中订购商品
- 如何获取 WooCommerce 订单详情
相关文章