Showing products in-stock only

WooCommerce - Showing products in-stock only

Solution 1 (easy)

This solution is purely configuration based, highly recommended to use. Use solution 2 only if this is not working for some reason. Step 1: Open up the Frontend search settings -> Custom fields panel

Step 2: Make a hidden filter, on the _stock_status custom field, with the value of “instock”:

After saving the options, the filter should be working.

Solution 2 (custom code)

I suggest using this solution if the first one is not working.

What is this, and where do I put this custom code?

add_filter( 'asp_pagepost_results', 'asp_stock_status_filter', 10, 1 );
function asp_stock_status_filter( $pageposts ) {
  foreach ($pageposts as $k=>$v) {
  
    // Get the stock status
    $stock_status = get_post_meta( $v->id, '_stock_status', true);
    if ( empty($stock_status) || $stock_status == "instock" ) 
      continue;
      
    unset($pageposts[$k]);    
  }
  return $pageposts;
}

Last updated