3

In Woocommerce I am trying to get the latest order ID. I have tried this:

global $post;
$order_id = $post->ID;

$order = new WC_Order($order_id);
$order_details = $order->get_data();

But it didn't work.

How to get the latest order ID in woocommerce?

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399

1 Answers1

4

Here is a custom function that will return the last order ID:

function get_last_order_id(){
    global $wpdb;
    $statuses = array_keys(wc_get_order_statuses());
    $statuses = implode( "','", $statuses );

    // Getting last Order ID (max value)
    $results = $wpdb->get_col( "
        SELECT MAX(ID) FROM {$wpdb->prefix}posts
        WHERE post_type LIKE 'shop_order'
        AND post_status IN ('$statuses')
    " );
    return reset($results);
}

Code goes in function.php file of your active child theme (active theme or in any plugin file).


USAGE (Example):

$latest_order_id = get_last_order_id(); // Last order ID
$order = wc_get_order( $latest_order_id ); // Get an instance of the WC_Order oject
$order_details = $order->get_data(); // Get the order data in an array

// Raw output test
echo '<pre>'; print_r( $order_details ); echo '</pre>';

Tested and work.

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399
  • Hello Loic . whether the results will be specif to customer or will it consider all the orders? –  Oct 21 '18 at 12:14
  • 1
    @LatheeshVMVilla No for a customer the SQL query need to be a bit different I think… but you can do it with wc_get_orders – LoicTheAztec Oct 21 '18 at 12:25