Kourosh
Kourosh

Reputation: 1074

How can I get the order ID in WooCommerce?

How do I retrieve the order ID in WooCommerce?

Upvotes: 31

Views: 178155

Answers (6)

Elvis Fernandes
Elvis Fernandes

Reputation: 1157

Current method:

The current way of accomplishing this is by using this function:

$order->get_id();

That should return the order id without "#".

Old method:

In older versions of WooCommerce, you may need to access it as a property instead:

echo $order->id;

Upvotes: 65

Loosie94
Loosie94

Reputation: 665

As LoicTheAztec mentioned here: https://stackoverflow.com/a/67182262/4638682

You get get this in several ways, within several template. Like so:

$order_id = absint( get_query_var('view-order') );

Upvotes: 1

Mindaugas Dobilas
Mindaugas Dobilas

Reputation: 89

As of woocommerce 3.0

$order->id;

will not work, it will generate notice, use getter function:

$order->get_id();

The same applies for other woocommerce objects like procut.

Upvotes: 6

piersb
piersb

Reputation: 598

$order = new WC_Order( $post_id ); 

If you

echo $order->id;

then you'll be returned the id of the post from which the order is made. As you've already got that, it's probably not what you want.

echo $order->get_order_number();

will return the id of the order (with a # in front of it). To get rid of the #,

echo trim( str_replace( '#', '', $order->get_order_number() ) );

as per the accepted answer.

Upvotes: 7

Dip
Dip

Reputation: 696

it worked. Just modified it

global $woocommerce, $post;

$order = new WC_Order($post->ID);

//to escape # from order id 

$order_id = trim(str_replace('#', '', $order->get_order_number()));

Upvotes: 41

rgdesign
rgdesign

Reputation: 515

I didnt test it and dont know were you need it, but:

$order = new WC_Order(post->ID);
echo $order->get_order_number();

Let me know if it works. I belive order number echoes with the "#" but you can split that if only need only the number.

Upvotes: 14

Related Questions