Show woocommerce Out of stock products at the end!

If you want to show your woocommerce out of stock product at the end of the list then you are in the right place.

go to your theme editor > function.php > then paste this code below everything.

please note: for safety use this code in the child theme.

class iWC_Orderby_Stock_Status {
public function __construct() {
    if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
        add_filter('posts_clauses', array($this, 'order_by_stock_status'), 2000);
public function order_by_stock_status($posts_clauses) {
    global $wpdb;   
    if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) {
        $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
        $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
        $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
    return $posts_clauses;
new iWC_Orderby_Stock_Status;

I share awesome WordPress tips and tricks here in my website.

Tags: No tags

Add a Comment

Your email address will not be published. Required fields are marked *