I ended up with over 30,000 products in my WooCommerce Trash. I really didn’t want to click the [Empty Trash] button dozens of times to delete as many products as possible before the process timed out.
I decided to try the WordPress Command Line Interface (aka WP CLI) for this task.
At first I tried to delete all 30,000 products in one shot using this WP CLI command:
wp post delete $(wp post list --post_status=trash --post_type='product' --format=ids)
But that returned the following error:
-bash: /usr/local/bin/wp: Argument list too long
So I needed to limit the number of products returned by the
wp post list command.
So I changed my initial command to this:
wp post delete $(wp post list --post_status=trash --post_type='product' --format=ids --posts_per_page=10000)
And it worked! You may need change
5000 but it’s still much more efficient than clicking the [Empty Trash] button for an hour…
And if you haven’t figured it out, you can use this same method to delete other post types such as Posts, Pages, etc… Just change
--post_type='product' to the post type you are targeting.