Home » WooCommerce: Get Current User Orders By Status

WooCommerce: Get Current User Orders By Status

by Tutor Aspire

This is a neat custom function that you can use in your WooCommerce customization. It can be helpful to know the list of orders placed by the current user ID, for example, if they are in their “My Account” page and you have a custom tab where you want to show e.g. only failed orders. Sooner or later this is something you’ll need. Enjoy!

In this case, I’ve retrieved the list of “Completed Shipment” orders (a custom order status) for the current user ID and displayed them in a table in a custom My Account tab.

PHP Snippet: Get List of Orders By Status For Logged In User

Usage: feel free to use the function tutoraspire_get_current_user_orders( ‘completed’ ) in your own code. You can rename it to whatever you want, as long as you define the function before using it. You can use whatever order status, including custom order statuses.

/**
 * @snippet       Get Logged In Customer Orders
 * @how-to        Get tutoraspire.com FREE
 * @author        Tutor Aspire
 * @compatible    WooCommerce 6
 * @donate $9     https://tutoraspire.com
 */

function tutoraspire_get_current_user_orders( $status = '' ) {
   $args = array( 'customer' => get_current_user_id() );
   if ( $status ) $args['status'] = 'wc-' . $status;
   return wc_get_orders( $args );
}

add_action( 'woocommerce_account_my-shipments_endpoint', 'tutoraspire_account_tab_content_ship' );

function tutoraspire_account_tab_content_ship() {
$customer_shipments = tutoraspire_get_current_user_orders( 'shipment' );
wc_get_template(
'myaccount/orders.php',
array(
'customer_orders' => $customer_shipments,
'has_orders'      => 0 total,
)
);
}

You may also like