Today’s snippet is a helpful shortcut for getting the list of customers in your WooCommerce website. This may be necessary during customization, especially if you need tailor-made features for administrators and shop managers in the backend or frontend.
How did I find out about the solution below? Well, our job is mainly copy/paste from online forums or read thoroughly the WooCommerce core files on a daily basis – so it must’ve been one of the two. Enjoy!
PHP Function: Get List of All WooCommerce “Customers”
/**
* @snippet Get Array Of WooCommerce Customers
* @how-to businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 6
* @community https://businessbloomer.com/club/
*/
function bbloomer_customer_list() {
$customer_query = new WP_User_Query(
array(
'fields' => 'ID',
'role' => 'customer',
)
);
return $customer_query->get_results();
}
Usage: call the bbloomer_customer_list() function and then loop over the returned array to go through each customer and get whatever you need:
foreach ( bbloomer_customer_list() as $customer_id ) {
$customer = new WC_Customer( $customer_id );
echo $customer->get_billing_first_name() . ' ' . $customer->get_billing_last_name();
}
Thanks for sharing. But in my opinion, to have a list of customers in woocommerce, the above code is not completely accurate. Because you only get users with the ‘customer’ role. There are other customers whose roles are not ‘customer’.
You can alternatively use the “role__in” parameter, which accepts an array of role names: https://developer.wordpress.org/reference/classes/wp_user_query/#user-role-parameter
Many Thanks For the useful content but, i’m facing the issue (Fatal error: Uncaught Error: Class “WC_Customer” not found) when used the below code together
Hi Roopam you can’t really do that, the second part of the snippet must be wrapped into its own function first.
Hi I love you code and always use it, I have been for years. Would you know a way of adding a custom checkout filed that displays a list of all the existing customers and the user been able to select them in the form, I know you have two separate tutorials on this but I could not get it to work together. Thanks
Hi Darren, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!