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] |