We’ve already seen how to sort frontend products by in stock first and out of stock last, but what about doing the exact same for administrators and shop managers in the backend?
Sometimes shops have to deal with a lot of “sold” products and the products table becomes messy, so this is a way to sort by stock status (In stock -> Out of stock) on load. You can then use the column headers to sort by other data as usual, so this will only work once you access /wp-admin/edit.php?post_type=product page.
So, here’s a very simple snippet for you. Enjoy!

PHP Snippet: Sort Products by Stock Status @ WooCommerce Admin
/**
* @snippet Product Sorted By Stock @ WordPress Dashboard
* @how-to businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 5
* @community https://businessbloomer.com/club/
*/
add_action( 'pre_get_posts', 'bbloomer_sort_products_by_stock_status_admin' );
function bbloomer_sort_products_by_stock_status_admin( $query ){
global $typenow;
if ( is_admin() && $query->is_main_query() && $typenow == 'product' ) {
if ( ! isset( $_GET['orderby'] ) ) {
$query->set( 'orderby', 'meta_value' );
$query->set( 'meta_key', '_stock_status' );
$query->set( 'order', 'ASC' );
}
}
}
Hello,
The code works but it does not short the products correctly from Product with most stock to product with least stock.
As of now it shows product in stock first organized randomly (no matter the quantity in stock) and then out of stock items.
How could I get the product in stock organized by stock quantity most quantity to least quantity?
Many thanks
Federico
Hello Federico, you could use an array inside the “orderby” setting: https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/