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.
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" )
return $pageposts;