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.
Put this code to the functions.php file in your active theme directory: