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!
PHP Snippet: Get List of Orders By Status For Logged In User
Usage: feel free to use the function bbloomer_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 businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 6
* @community https://businessbloomer.com/club/
*/
function bbloomer_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', 'bbloomer_account_tab_content_ship' );
function bbloomer_account_tab_content_ship() {
$customer_shipments = bbloomer_get_current_user_orders( 'shipment' );
wc_get_template(
'myaccount/orders.php',
array(
'customer_orders' => $customer_shipments,
'has_orders' => 0 < $customer_shipments->total,
)
);
}
Thank you very much, that helped me a lot! (again)
Yay!
Hello,
This works wonderful. However, this is not working for the custom Order Status which I have implemented another post of yours.
https://www.businessbloomer.com/woocommerce-set-custom-order-status-for-new-orders/
Can you help on this.
What status did you enter here?
Just testing…
Test passed!