相关信息: ·如何从WooCommerce中的订单中获取客户详细信息? ·在WooCommerce 3中获取订单项目和WC_Order_Item_Product 因此,Order items属性将无法像以前那样在**foreach循环中访问,您必须改用these specific getter and setter methods。 使用一些WC_Order和WC_Abstract_Order**方法(示例):
// 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 (see the conditional method has_status() below)
$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)
$order_received_url = $order->get_checkout_order_received_url();
$billing_country = $order->get_billing_country(); // Customer billing country
// ... and so on ...
// 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 $order object from order ID
$order = wc_get_order( $order_id );
// Now you have access to (see above)...
if ( $order ) {
// Get Order ID and Key
$order->get_id();
$order->get_order_key();
// Get Order Totals $0.00
$order->get_formatted_order_total();
$order->get_cart_tax();
$order->get_currency();
$order->get_discount_tax();
$order->get_discount_to_display();
$order->get_discount_total();
$order->get_fees();
$order->get_formatted_line_subtotal();
$order->get_shipping_tax();
$order->get_shipping_total();
$order->get_subtotal();
$order->get_subtotal_to_display();
$order->get_tax_location();
$order->get_tax_totals();
$order->get_taxes();
$order->get_total();
$order->get_total_discount();
$order->get_total_tax();
$order->get_total_refunded();
$order->get_total_tax_refunded();
$order->get_total_shipping_refunded();
$order->get_item_count_refunded();
$order->get_total_qty_refunded();
$order->get_qty_refunded_for_item();
$order->get_total_refunded_for_item();
$order->get_tax_refunded_for_item();
$order->get_total_tax_refunded_by_rate_id();
$order->get_remaining_refund_amount();
}
7条答案
按热度按时间ghhkc1vu1#
WOOCOMMERCE 3.0+版订单
自从Woocommerce大型更新3.0+以来,事情发生了很大的变化:
WC_Order
Object,属性不能像以前那样直接访问,并且会抛出一些错误。WC_Order
对象示例上现在需要新的WC_Order
和WC_Abstract_Order
getter和setter方法。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。WC_Data
抽象类允许使用get_data()
,get_meta_data()
和get_meta()
方法访问订单和订单项数据。相关信息:
·如何从WooCommerce中的订单中获取客户详细信息?
·在WooCommerce 3中获取订单项目和WC_Order_Item_Product
因此,Order items属性将无法像以前那样在**
foreach
循环中访问,您必须改用these specific getter and setter methods。使用一些
WC_Order
和WC_Abstract_Order
**方法(示例):对于作为条件方法的订单状态 (其中“the_targeted_status”需要定义并替换为订单状态以针对特定订单状态):
获取和访问订单数据属性(在值数组中):
获取订单项,使用**
WC_Order_Item_Product
和WC_Order_Item
**方法访问数据:所以使用**
get_data()
**方法允许我们访问受保护的数据(关联数组模式).fdx2calv2#
仅适用于WOOCOMMERCE版本2.5.x和2.6.x
对于WOOCOMMERCE版本3.0+见此更新
这里是我做的一个自定义函数,为了让你清楚,与获取订单ID的数据有关。您将看到您可以获得的所有不同RAW输出以及如何获得所需的数据。
使用**
print_r()
*函数 (或var_dump()
*函数) 允许输出对象或数组的原始数据。所以首先我输出这些数据来显示对象或数组的层次结构。然后根据变量的类型(字符串、数组或对象)使用不同的语法来输出所需的特定数据。
重要提示:使用
$order
对象,您可以使用大多数WC_order
或**WC_Abstract_Order
* 方法**(使用对象语法).代码如下:
用法(例如您的订单ID为159):
此代码已测试并工作。
2016年11月21日更新代码
9wbgstp73#
解释了访问直接属性和相关属性
附加细节
55ooxyrt4#
您可以通过订单对象获取所有详细信息。
egmofgnx5#
使用wp/wc rest API:
来源:https://wpscholar.com/blog/internal-wp-rest-api-calls/,https://developer.wordpress.org/rest-api/reference/posts/#list-posts
hpcdzsge6#
使用以下代码行从订单ID获取WooCommerce订单详细信息:
您可以使用以下步骤:
1.使用**WC_Order()**构造函数获取order对象。
1.使用order对象上的getter方法来获取所需的订单详细信息。
例如,要获取订单总额,可以使用以下代码:
要获取订单状态,可以使用以下代码:
要获取订单账单地址,可以使用以下代码:
要获取订单送货地址,可以使用以下代码:
您也可以使用**get_data()**方法来获取所有订单数据的数组。这可能是有用的,如果你需要一次获得所有的订单细节。
例如,要获取所有订单数据的数组,可以使用以下代码:
一旦你有了订单数据,你就可以随心所欲地使用它。例如,您可以将其显示在您的网站上,保存到数据库,或将其发送到支付网关。
ippsafx77#