如何获得WooCommerce订单详细信息 [英] How to get WooCommerce order details
问题描述
在WooCommerce中,以下行代码:
In WooCommerce from the following line code:
$order = new WC_Order( $order_id );
如何从订单ID中获取WooCommerce订单详细信息?
How can I get WooCommerce order details from the order id?
推荐答案
WOOCOMMERCE VERSION 3.0或更高版本
自Woocommerce大型重大更新3.0以来,事情已经发生了很大变化:
Since Woocommerce mega major Update 3.0+ things have changed quite a lot:
- 对于
WC_Order
对象,无法再像以前一样直接访问属性,并且会引发一些错误. - 新的
WC_Order
和WC_Abstract_Order
getter和setter方法是现在在WC_Order
对象实例上是必需的. - 此外,还有一些用于订购商品的新类:
-
WC_Order_Item
类, -
WC_Order_Item_Product
类, -
WC_Order_Item_Tax
类 , -
WC_Order_Item_Shipping
类 , -
WC_Order_Item_Coupon
类 , -
WC_Order_Item_Fee
类 .
- For
WC_Order
Object, properties can't be accessed directly anymore as before and will throw some errors. - New
WC_Order
andWC_Abstract_Order
getter and setter methods are now required on theWC_Order
object instance. - Also, there are some New classes for Order items:
WC_Order_Item
class,WC_Order_Item_Product
class,WC_Order_Item_Tax
class,WC_Order_Item_Shipping
class,WC_Order_Item_Coupon
class,WC_Order_Item_Fee
class.
相关:
•如何从WooCommerce的订单中获取客户详细信息?
•获取订单商品和WC_Order_Item_Product在WooCommerce 3中Related:
• How to get Customer details from Order in WooCommerce?
• Get Order items and WC_Order_Item_Product in WooCommerce 3因此,将无法像以前一样在
foreach
循环中访问订购商品"属性,您将必须使用So the Order items properties will not be accessible as before in a
foreach
loop and you will have to use these specific getter and setter methods instead.使用一些
WC_Order
和WC_Abstract_Order
方法(示例):Using some
WC_Order
andWC_Abstract_Order
methods (example):// Get an instance of the WC_Order object (same as before) $order = wc_get_order( $order_id ); $order_id = $order->get_id(); // Get the order ID $parent_id = $order->get_parent_id(); // Get the parent order ID (for subscriptions…) $user_id = $order->get_user_id(); // Get the costumer ID $user = $order->get_user(); // Get the WP_User object $order_status = $order->get_status(); // Get the order status $currency = $order->get_currency(); // Get the currency used $payment_method = $order->get_payment_method(); // Get the payment method ID $payment_title = $order->get_payment_method_title(); // Get the payment method title $date_created = $order->get_date_created(); // Get date created (WC_DateTime object) $date_modified = $order->get_date_modified(); // Get date modified (WC_DateTime object) $billing_country = $order->get_billing_country(); // Customer billing country // ... and so on ...
获取并访问订单数据属性(值数组):
Get and access to the order data properties (in an array of values):
// Get an instance of the WC_Order object $order = wc_get_order( $order_id ); $order_data = $order->get_data(); // The Order data $order_id = $order_data['id']; $order_parent_id = $order_data['parent_id']; $order_status = $order_data['status']; $order_currency = $order_data['currency']; $order_version = $order_data['version']; $order_payment_method = $order_data['payment_method']; $order_payment_method_title = $order_data['payment_method_title']; $order_payment_method = $order_data['payment_method']; $order_payment_method = $order_data['payment_method']; ## Creation and modified WC_DateTime Object date string ## // Using a formated date ( with php date() function as method) $order_date_created = $order_data['date_created']->date('Y-m-d H:i:s'); $order_date_modified = $order_data['date_modified']->date('Y-m-d H:i:s'); // Using a timestamp ( with php getTimestamp() function as method) $order_timestamp_created = $order_data['date_created']->getTimestamp(); $order_timestamp_modified = $order_data['date_modified']->getTimestamp(); $order_discount_total = $order_data['discount_total']; $order_discount_tax = $order_data['discount_tax']; $order_shipping_total = $order_data['shipping_total']; $order_shipping_tax = $order_data['shipping_tax']; $order_total = $order_data['cart_tax']; $order_total_tax = $order_data['total_tax']; $order_customer_id = $order_data['customer_id']; // ... and so on ## BILLING INFORMATION: $order_billing_first_name = $order_data['billing']['first_name']; $order_billing_last_name = $order_data['billing']['last_name']; $order_billing_company = $order_data['billing']['company']; $order_billing_address_1 = $order_data['billing']['address_1']; $order_billing_address_2 = $order_data['billing']['address_2']; $order_billing_city = $order_data['billing']['city']; $order_billing_state = $order_data['billing']['state']; $order_billing_postcode = $order_data['billing']['postcode']; $order_billing_country = $order_data['billing']['country']; $order_billing_email = $order_data['billing']['email']; $order_billing_phone = $order_data['billing']['phone']; ## SHIPPING INFORMATION: $order_shipping_first_name = $order_data['shipping']['first_name']; $order_shipping_last_name = $order_data['shipping']['last_name']; $order_shipping_company = $order_data['shipping']['company']; $order_shipping_address_1 = $order_data['shipping']['address_1']; $order_shipping_address_2 = $order_data['shipping']['address_2']; $order_shipping_city = $order_data['shipping']['city']; $order_shipping_state = $order_data['shipping']['state']; $order_shipping_postcode = $order_data['shipping']['postcode']; $order_shipping_country = $order_data['shipping']['country'];
获取订单商品并使用
WC_Order_Item_Product
和WC_Order_Item
方法访问数据:Get the order items and access the data with
WC_Order_Item_Product
andWC_Order_Item
methods:// Get an instance of the WC_Order object $order = wc_get_order($order_id); // Iterating through each WC_Order_Item_Product objects foreach ($order->get_items() as $item_key => $item ): ## Using WC_Order_Item methods ## // Item ID is directly accessible from the $item_key in the foreach loop or $item_id = $item->get_id(); ## Using WC_Order_Item_Product methods ## $product = $item->get_product(); // Get the WC_Product object $product_id = $item->get_product_id(); // the Product id $variation_id = $item->get_variation_id(); // the Variation id $item_type = $item->get_type(); // Type of the order item ("line_item") $item_name = $item->get_name(); // Name of the product $quantity = $item->get_quantity(); $tax_class = $item->get_tax_class(); $line_subtotal = $item->get_subtotal(); // Line subtotal (non discounted) $line_subtotal_tax = $item->get_subtotal_tax(); // Line subtotal tax (non discounted) $line_total = $item->get_total(); // Line total (discounted) $line_total_tax = $item->get_total_tax(); // Line total tax (discounted) ## Access Order Items data properties (in an array of values) ## $item_data = $item->get_data(); $product_name = $item_data['name']; $product_id = $item_data['product_id']; $variation_id = $item_data['variation_id']; $quantity = $item_data['quantity']; $tax_class = $item_data['tax_class']; $line_subtotal = $item_data['subtotal']; $line_subtotal_tax = $item_data['subtotal_tax']; $line_total = $item_data['total']; $line_total_tax = $item_data['total_tax']; // Get data from The WC_product object using methods (examples) $product = $item->get_product(); // Get the WC_Product object $product_type = $product->get_type(); $product_sku = $product->get_sku(); $product_price = $product->get_price(); $stock_quantity = $product->get_stock_quantity(); endforeach;
因此,使用
get_data()
方法可以使我们访问受保护的数据(关联数组模式)……So using
get_data()
method allow us to access to the protected data (associative array mode) …这篇关于如何获得WooCommerce订单详细信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
-