0Day Forums
How to query Woocommerce orders on a page - Printable Version

+- 0Day Forums (https://0day.red)
+-- Forum: Coding (https://0day.red/Forum-Coding)
+--- Forum: CMS (https://0day.red/Forum-CMS)
+---- Forum: WordPress (https://0day.red/Forum-WordPress)
+---- Thread: How to query Woocommerce orders on a page (/Thread-How-to-query-Woocommerce-orders-on-a-page)



How to query Woocommerce orders on a page - floozie801911 - 07-27-2023

I want to create a page that displays a query from the database to show some order details.

How to display this query on a page?


RE: How to query Woocommerce orders on a page - Sirashantijiqpy - 07-27-2023

As long as it's the last query executed, you can use `$wpdb->last_query` to grab the last query. You'll need to have `define('SAVEQUERIES', true)` in your `wp-config.php` for this


RE: How to query Woocommerce orders on a page - filterer769235 - 07-27-2023

There is multiple ways to get Woocommerce Orders:

1) Woocommerce has a dedicated function [`wc_get_orders()`][1] that will give you an array of WC_Order objects:

$orders = wc_get_orders( array('numberposts' => -1) );

// Loop through each WC_Order object
foreach( $orders as $order ){
echo $order->get_id() . '<br>'; // The order ID
echo $order->get_status() . '<br>'; // The order status
}

To get the order data see the links below

----------

2) You can also use a Wordpress [`WP_Query`][2]:

$loop = new WP_Query( array(
'post_type' => 'shop_order',
'post_status' => array_keys( wc_get_order_statuses() ),
'posts_per_page' => -1,
) );

// The Wordpress post loop
if ( $loop->have_posts() ):
while ( $loop->have_posts() ) : $loop->the_post();

// The order ID
$order_id = $loop->post->ID;

// Get an instance of the WC_Order Object
$order = wc_get_order($loop->post->ID);

endwhile;

wp_reset_postdata();

endif;

To get the order data see the links below

------

3) You can use a SQL query

global $wpdb;
$results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE post_type LIKE 'shop_order'");

// Loop through each order post object
foreach( $results as $result ){
$order_id = $result->ID; // The Order ID

// Get an instance of the WC_Order Object
$order = wc_get_order( $result->ID );
}

--------

You will be able to get all order details from the [`WC_Order` object][3] as explained in:

-

[To see links please register here]

-

[To see links please register here]



-------

**Displaying the data as a list in a table**

To display the orders in a list, you should have a look to the woocommerce deprecated template [myaccount/my-orders.php][4] or to [myaccount/orders.php template][5]…

It will give you a model…


[1]:

[To see links please register here]

[2]:

[To see links please register here]

[3]:

[To see links please register here]

[4]:

[To see links please register here]

[5]:

[To see links please register here]