- This topic is empty.
- AuthorPosts
-
September 8, 2016 at 11:00 am #8890
faisal-ijaz
ParticipantIn WooCommerce from the following line code:
$order = new WC_Order( $order_id );
How can I get WooCommerce order details from the order id?
September 9, 2016 at 10:15 am #10244loictheaztec
ParticipantONLY FOR WOOCOMMERCE VERSIONS 2.5.x AND 2.6.x
For WOOCOMMERCE VERSION 3.0+ see THIS UPDATE
Here is a custom function I have made, to make the things clear for you, related to get the data of an order ID. You will see all the different RAW outputs you can get and how to get the data you need…
Using
print_r()
function (orvar_dump()
function too) allow to output the raw data of an object or an array.So first I output this data to show the object or the array hierarchy. Then I use different syntax depending on the type of that variable (string, array or object) to output the specific data needed.
IMPORTANT: With
$order
object you can use most ofWC_order
orWC_Abstract_Order
methods (using the object syntax)…
Here is the code:
function get_order_details($order_id){ // 1) Get the Order object $order = wc_get_order( $order_id ); // OUTPUT echo '<h3>RAW OUTPUT OF THE ORDER OBJECT: </h3>'; print_r($order); echo '<br><br>'; echo '<h3>THE ORDER OBJECT (Using the object syntax notation):</h3>'; echo '$order->order_type: ' . $order->order_type . '<br>'; echo '$order->id: ' . $order->id . '<br>'; echo '<h4>THE POST OBJECT:</h4>'; echo '$order->post->ID: ' . $order->post->ID . '<br>'; echo '$order->post->post_author: ' . $order->post->post_author . '<br>'; echo '$order->post->post_date: ' . $order->post->post_date . '<br>'; echo '$order->post->post_date_gmt: ' . $order->post->post_date_gmt . '<br>'; echo '$order->post->post_content: ' . $order->post->post_content . '<br>'; echo '$order->post->post_title: ' . $order->post->post_title . '<br>'; echo '$order->post->post_excerpt: ' . $order->post->post_excerpt . '<br>'; echo '$order->post->post_status: ' . $order->post->post_status . '<br>'; echo '$order->post->comment_status: ' . $order->post->comment_status . '<br>'; echo '$order->post->ping_status: ' . $order->post->ping_status . '<br>'; echo '$order->post->post_password: ' . $order->post->post_password . '<br>'; echo '$order->post->post_name: ' . $order->post->post_name . '<br>'; echo '$order->post->to_ping: ' . $order->post->to_ping . '<br>'; echo '$order->post->pinged: ' . $order->post->pinged . '<br>'; echo '$order->post->post_modified: ' . $order->post->post_modified . '<br>'; echo '$order->post->post_modified_gtm: ' . $order->post->post_modified_gtm . '<br>'; echo '$order->post->post_content_filtered: ' . $order->post->post_content_filtered . '<br>'; echo '$order->post->post_parent: ' . $order->post->post_parent . '<br>'; echo '$order->post->guid: ' . $order->post->guid . '<br>'; echo '$order->post->menu_order: ' . $order->post->menu_order . '<br>'; echo '$order->post->post_type: ' . $order->post->post_type . '<br>'; echo '$order->post->post_mime_type: ' . $order->post->post_mime_type . '<br>'; echo '$order->post->comment_count: ' . $order->post->comment_count . '<br>'; echo '$order->post->filter: ' . $order->post->filter . '<br>'; echo '<h4>THE ORDER OBJECT (again):</h4>'; echo '$order->order_date: ' . $order->order_date . '<br>'; echo '$order->modified_date: ' . $order->modified_date . '<br>'; echo '$order->customer_message: ' . $order->customer_message . '<br>'; echo '$order->customer_note: ' . $order->customer_note . '<br>'; echo '$order->post_status: ' . $order->post_status . '<br>'; echo '$order->prices_include_tax: ' . $order->prices_include_tax . '<br>'; echo '$order->tax_display_cart: ' . $order->tax_display_cart . '<br>'; echo '$order->display_totals_ex_tax: ' . $order->display_totals_ex_tax . '<br>'; echo '$order->display_cart_ex_tax: ' . $order->display_cart_ex_tax . '<br>'; echo '$order->formatted_billing_address->protected: ' . $order->formatted_billing_address->protected . '<br>'; echo '$order->formatted_shipping_address->protected: ' . $order->formatted_shipping_address->protected . '<br><br>'; echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <br><br>'; // 2) Get the Order meta data $order_meta = get_post_meta($order_id); echo '<h3>RAW OUTPUT OF THE ORDER META DATA (ARRAY): </h3>'; print_r($order_meta); echo '<br><br>'; echo '<h3>THE ORDER META DATA (Using the array syntax notation):</h3>'; echo '$order_meta[_order_key][0]: ' . $order_meta[_order_key][0] . '<br>'; echo '$order_meta[_order_currency][0]: ' . $order_meta[_order_currency][0] . '<br>'; echo '$order_meta[_prices_include_tax][0]: ' . $order_meta[_prices_include_tax][0] . '<br>'; echo '$order_meta[_customer_user][0]: ' . $order_meta[_customer_user][0] . '<br>'; echo '$order_meta[_billing_first_name][0]: ' . $order_meta[_billing_first_name][0] . '<br><br>'; echo 'And so on ……… <br><br>'; echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <br><br>'; // 3) Get the order items $items = $order->get_items(); echo '<h3>RAW OUTPUT OF THE ORDER ITEMS DATA (ARRAY): </h3>'; foreach ( $items as $item_id => $item_data ) { echo '<h4>RAW OUTPUT OF THE ORDER ITEM NUMBER: '. $item_id .'): </h4>'; print_r($item_data); echo '<br><br>'; echo 'Item ID: ' . $item_id. '<br>'; echo '$item_data["product_id"] <i>(product ID)</i>: ' . $item_data['product_id'] . '<br>'; echo '$item_data["name"] <i>(product Name)</i>: ' . $item_data['name'] . '<br>'; // Using get_item_meta() method echo 'Item quantity <i>(product quantity)</i>: ' . $order->get_item_meta($item_id, '_qty', true) . '<br><br>'; echo 'Item line total <i>(product quantity)</i>: ' . $order->get_item_meta($item_id, '_line_total', true) . '<br><br>'; echo 'And so on ……… <br><br>'; echo '- - - - - - - - - - - - - <br><br>'; } echo '- - - - - - E N D - - - - - <br><br>'; }
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
Usage (if your order ID is 159 for example):
get_order_details(159);
This code is tested and works.
Updated code on November 21, 2016
June 22, 2017 at 7:59 am #10245loictheaztec
ParticipantWOOCOMMERCE ORDERS IN VERSION 3.0+
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
andWC_Abstract_Order
getter and setter methods are now required on theWC_Order
object instance. - Also, there are some New classes for Order items:
- Additionally,
WC_Data
Abstract class allow to access Order and order items data usingget_data()
,get_meta_data()
andget_meta()
methods.
Related:
• How can I get customer details from an order in WooCommerce?
• Get Order items and WC_Order_Item_Product in WooCommerce 3So 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.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 (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 ...
For order status as a conditional method (where "the_targeted_status" need to be defined and replaced by an order status to target a specific order status):
if ( $order->has_status('completed') ) { // Do something }
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['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'];
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;
So using
get_data()
method allow us to access to the protected data (associative array mode) …March 28, 2018 at 7:13 am #10239swaroop-t-n
Participant$order = new WC_Order(get_query_var('order-received'));
February 22, 2019 at 12:19 pm #10243mujuonly
ParticipantAccessing direct properties and related are explained
// Get an instance of the WC_Order object $order = wc_get_order($order_id); $order_data = array( 'order_id' => $order->get_id(), 'order_number' => $order->get_order_number(), 'order_date' => date('Y-m-d H:i:s', strtotime(get_post($order->get_id())->post_date)), 'status' => $order->get_status(), 'shipping_total' => $order->get_total_shipping(), 'shipping_tax_total' => wc_format_decimal($order->get_shipping_tax(), 2), 'fee_total' => wc_format_decimal($fee_total, 2), 'fee_tax_total' => wc_format_decimal($fee_tax_total, 2), 'tax_total' => wc_format_decimal($order->get_total_tax(), 2), 'cart_discount' => (defined('WC_VERSION') && (WC_VERSION >= 2.3)) ? wc_format_decimal($order->get_total_discount(), 2) : wc_format_decimal($order->get_cart_discount(), 2), 'order_discount' => (defined('WC_VERSION') && (WC_VERSION >= 2.3)) ? wc_format_decimal($order->get_total_discount(), 2) : wc_format_decimal($order->get_order_discount(), 2), 'discount_total' => wc_format_decimal($order->get_total_discount(), 2), 'order_total' => wc_format_decimal($order->get_total(), 2), 'order_currency' => $order->get_currency(), 'payment_method' => $order->get_payment_method(), 'shipping_method' => $order->get_shipping_method(), 'customer_id' => $order->get_user_id(), 'customer_user' => $order->get_user_id(), 'customer_email' => ($a = get_userdata($order->get_user_id() )) ? $a->user_email : '', 'billing_first_name' => $order->get_billing_first_name(), 'billing_last_name' => $order->get_billing_last_name(), 'billing_company' => $order->get_billing_company(), 'billing_email' => $order->get_billing_email(), 'billing_phone' => $order->get_billing_phone(), 'billing_address_1' => $order->get_billing_address_1(), 'billing_address_2' => $order->get_billing_address_2(), 'billing_postcode' => $order->get_billing_postcode(), 'billing_city' => $order->get_billing_city(), 'billing_state' => $order->get_billing_state(), 'billing_country' => $order->get_billing_country(), 'shipping_first_name' => $order->get_shipping_first_name(), 'shipping_last_name' => $order->get_shipping_last_name(), 'shipping_company' => $order->get_shipping_company(), 'shipping_address_1' => $order->get_shipping_address_1(), 'shipping_address_2' => $order->get_shipping_address_2(), 'shipping_postcode' => $order->get_shipping_postcode(), 'shipping_city' => $order->get_shipping_city(), 'shipping_state' => $order->get_shipping_state(), 'shipping_country' => $order->get_shipping_country(), 'customer_note' => $order->get_customer_note(), 'download_permissions' => $order->is_download_permitted() ? $order->is_download_permitted() : 0, );
Additional details
$line_items_shipping = $order->get_items('shipping'); foreach ($line_items_shipping as $item_id => $item) { if (is_object($item)) { if ($meta_data = $item->get_formatted_meta_data('')) : foreach ($meta_data as $meta_id => $meta) : if (in_array($meta->key, $line_items_shipping)) { continue; } // html entity decode is not working preoperly $shipping_items[] = implode('|', array('item:' . wp_kses_post($meta->display_key), 'value:' . str_replace('×', 'X', strip_tags($meta->display_value)))); endforeach; endif; } } //get fee and total $fee_total = 0; $fee_tax_total = 0; foreach ($order->get_fees() as $fee_id => $fee) { $fee_items[] = implode('|', array( 'name:' . html_entity_decode($fee['name'], ENT_NOQUOTES, 'UTF-8'), 'total:' . wc_format_decimal($fee['line_total'], 2), 'tax:' . wc_format_decimal($fee['line_tax'], 2), )); $fee_total += $fee['line_total']; $fee_tax_total += $fee['line_tax']; } // get tax items foreach ($order->get_tax_totals() as $tax_code => $tax) { $tax_items[] = implode('|', array( 'rate_id:'.$tax->id, 'code:' . $tax_code, 'total:' . wc_format_decimal($tax->amount, 2), 'label:'.$tax->label, 'tax_rate_compound:'.$tax->is_compound, )); } // add coupons foreach ($order->get_items('coupon') as $_ => $coupon_item) { $coupon = new WC_Coupon($coupon_item['name']); $coupon_post = get_post((WC()->version < '2.7.0') ? $coupon->id : $coupon->get_id()); $discount_amount = !empty($coupon_item['discount_amount']) ? $coupon_item['discount_amount'] : 0; $coupon_items[] = implode('|', array( 'code:' . $coupon_item['name'], 'description:' . ( is_object($coupon_post) ? $coupon_post->post_excerpt : '' ), 'amount:' . wc_format_decimal($discount_amount, 2), )); } foreach ($order->get_refunds() as $refunded_items){ $refund_items[] = implode('|', array( 'amount:' . $refunded_items->get_amount(), 'reason:' . $refunded_items->get_reason(), 'date:'. date('Y-m-d H-i-s',strtotime((WC()->version < '2.7.0') ? $refunded_items->date_created : $refunded_items->get_date_created())), )); }
December 20, 2020 at 10:39 am #10242zaheer-bashir
ParticipantYou can get all details by order object.
// 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(); }
November 27, 2021 at 4:17 am #10241hamid-araghi
ParticipantUsing wp/wc rest api :
$request = new WP_REST_Request('GET', '/wc/v3/orders/<YOUR_ORDER_ID'); $response = rest_do_request($request); $server = rest_get_server(); $order = $server->response_to_data($response, false); print_r( $order['id'] ); print_r( $order['date_created'] ); print_r( $order['status'] ); ...
sources: https://wpscholar.com/blog/internal-wp-rest-api-calls/ , https://developer.wordpress.org/rest-api/reference/posts/#list-posts
October 6, 2023 at 7:12 am #10240sharpminds
ParticipantTo get WooCommerce order details from the order ID using the following line of code:
$order = new WC_Order( $order_id );
You can use the following steps:
- Get the order object using the WC_Order() constructor.
- Use the getter methods on the order object to get the order details that you need.
For example, to get the order total, you can use the following code:
$order_total = $order->get_total();
To get the order status, you can use the following code:
$order_status = $order->get_status();
To get the order billing address, you can use the following code:
$order_billing_address = $order->get_billing_address();
To get the order shipping address, you can use the following code:
$order_shipping_address = $order->get_shipping_address();
You can also use the get_data() method to get an array of all of the order data. This can be useful if you need to get all of the order details at once.
For example, to get an array of all of the order data, you can use the following code:
$order_data = $order->get_data();
Once you have the order data, you can use it however you need. For example, you can display it on your website, save it to a database, or send it to a payment gateway.
- For
- AuthorPosts
- You must be logged in to reply to this topic.