如何获取WooCommerce订单详细信息

在WooCommerce中,从以下代码行:

$order = new WC_Order( $order_id );

如何从订单ID获取WooCommerce订单详细信息?

回答:

自Woocommerce大型主要更新3.0+以来,事情已经发生了很多变化:

  • 对于 对象,无法像以前一样直接访问属性,并且会引发一些错误。
  • 现在,对象实例需要使用new 以及 getter和setter方法WC_Order
  • 此外,还有一些用于订购商品的新类:

    • 类,
    • class
    • _WC_Order_Item_Tax class
    • _WC_Order_Item_Shippingclass
    • _WC_Order_Item_Coupon class
    • _WC_Order_Item_Fee class

因此,无法像以前那样在 循环中访问Orderitems属性,而必须使用这些特定的getter和setter方法]。

使用一些 和 方法(示例):

// 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 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'];

获取订单项并使用 和 方法访问数据:

// 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;

因此,使用 method可以使我们访问受保护的数据(关联数组模式)…

以上是 如何获取WooCommerce订单详细信息 的全部内容, 来源链接: utcz.com/qa/434725.html

回到顶部