1. Cách ẩn sản phẩm hết hàng trên trang lưu trữ của shop
Bạn có thể sử dụng chức năng sau với woocommerce_product_query_meta_query để ẩn các sản phẩm hết hàng trong trang lưu trữ của Shop. Chỉ cần thêm tập lệnh sau vào tệp functions.php của chủ đề con của bạn và cập nhật tệp.

add_filter( 'woocommerce_product_query_meta_query', 'shop_only_instock_products', 10, 2 );
function shop_only_instock_products( $meta_query, $query ) {
  // Only on shop archive pages
  if( is_admin() || is_search() || ! is_shop() ) return $meta_query;
  $meta_query[] = array(
   'key' => '_stock_status',
   'value' => 'outofstock',
   'compare' => '!='
  );
 return $meta_query;
}

2. Cách ẩn sản phẩm hết hàng trên trang chủ
Nếu bạn chỉ muốn ẩn các sản phẩm hết hàng khỏi trang chủ của mình, bạn có thể sử dụng chức năng sau bằng cách sử dụng cùng một móc bộ lọc woocommerce_product_query_meta_query.

add_filter( 'woocommerce_product_query_meta_query', 'filter_product_query_meta_query', 10, 2 );
function filter_product_query_meta_query( $meta_query, $query ) {
  // On woocommerce home page only
  if( is_front_page() ){
  // Exclude products "out of stock"
    $meta_query[] = array(
     'key' => '_stock_status',
     'value' => 'outofstock',
     'compare' => '!=',
    );
  }
  return $meta_query;
}

3. Cách ẩn các sản phẩm hết hàng trong các trang tìm kiếm của bạn.
Để ẩn các sản phẩm không có sẵn khỏi tất cả các trang tìm kiếm của mình, bạn có thể sử dụng hàm sau sử dụng móc tác vụ pre_get_posts. Chỉ cần dán nó vào functions.php của chủ đề con của bạn và nhấn nút Cập nhật tệp. Bằng cách này, nếu khách hàng của bạn tìm kiếm bất kỳ sản phẩm nào đã hết hàng của bạn, họ sẽ không thể tìm thấy chúng.

add_action( 'pre_get_posts', hide_out_of_stock_in_search' );
function hide_out_of_stock_in_search( $query ){
  if( $query->is_search() && $query->is_main_query() ) {
    $query->set( 'meta_key', '_stock_status' );
    $query->set( 'meta_value', 'instock' );
   }
}

4. Cách ẩn sản phẩm hết hàng trong phần sản phẩm Liên quan
Nếu bạn muốn đảm bảo rằng không có phần sản phẩm liên quan nào hiển thị sản phẩm hết hàng, bạn có thể sử dụng tập lệnh này. Bằng cách này, khách hàng của bạn sẽ chỉ nhận được các đề xuất về sản phẩm mà họ có thể mua ngay lập tức.

function hide_out_of_stock_option( $option ){
   return 'yes';
}
add_action( 'woocommerce_before_template_part', function( $template_name ) {
   if( $template_name !== "single-product/related.php" ) {
    return;
   }
   add_filter( 'pre_option_woocommerce_hide_out_of_stock_items', 'hide_out_of_stock_option' );
} );
add_action( 'woocommerce_after_template_part', function( $template_name ) {
if( $template_name !== "single-product/related.php" ) {
   return;
}
remove_filter( 'pre_option_woocommerce_hide_out_of_stock_items', 'hide_out_of_stock_option' );
} );