How to get WooCommerce order details?

Since Woocommerce mega major Update 3.0+ things have changed quite a lot:

For WC_Order Object, properties can’t be accessed directly anymore as before and will throw some errors.
New WC_Order and WC_Abstract_Order getter and setter methods are now required on the WC_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.

Additionally, WC_Data Abstract class allow to access Order and order items data using **get_data(), get_meta_data() and get_meta() **methods.

Using some WC_Order and WC_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 (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)

billing_country =order->get_billing_country(); // Customer billing country
if ( $order->has_status('completed') ) {
    // Do something
}
// 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['total'];
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'];
if ( order->has_status('completed') ) {
    // Get an instance of the WC_Order objectorder = 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 oritem_id = item->get_id();

    ## Using WC_Order_Item_Product methods ##product      = item->get_product(); // Get the WC_Product objectproduct_id   = item->get_product_id(); // the Product idvariation_id = item->get_variation_id(); // the Variation iditem_type    = item->get_type(); // Type of the order item ("line_item")item_name    = item->get_name(); // Name of the productquantity     = 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 objectproduct_type   = product->get_type();product_sku    = product->get_sku();product_price  = product->get_price();stock_quantity = $product->get_stock_quantity();

endforeach;
}

SOURCE: https://stackoverflow.com/questions/39401393/how-to-get-woocommerce-order-details


Leave a Reply

Your email address will not be published. Required fields are marked *