function custom_hide_out_of_stock_products($q) {
  //  if (is_admin()) return $q; // Don't filter in the admin area

    $meta_query = $q->get('meta_query');

    // Add a condition to exclude products with stock quantity 0
    $meta_query[] = array(
        'key' => '_stock_status',
        'value' => 'instock', // This is for products in stock
        'compare' => '='
    );

    $q->set('meta_query', $meta_query);

    return $q;
}
add_filter('woocommerce_product_query', 'custom_hide_out_of_stock_products');