如何在WooCommerce分类页面中隐藏缺货商品?
实现方案
你现有代码中已经使用了WooCommerce原生的woocommerce_product_query_meta_query过滤器来控制缺货商品的展示,目前分类页没有生效是因为判断条件仅限制了仅商店页生效,只需要调整条件判断规则,将商品分类页加入生效范围即可。
修改后的代码
你只需要替换原有代码中shop_only_instock_products对应的函数段即可:
add_filter( 'woocommerce_product_query_meta_query', 'shop_only_instock_products', 10, 2 ); function shop_only_instock_products( $meta_query, $query ) { // 仅在商店页、商品分类页、商品标签页生效,排除后台、搜索页 if( is_admin() || is_search() || ! ( is_shop() || is_product_category() || is_product_tag() ) ) return $meta_query; $meta_query[] = array( 'key' => '_stock_status', 'value' => 'outofstock', 'compare' => '!=' ); return $meta_query; }
说明
- 如果你不需要商品标签页也隐藏缺货商品,删掉判断条件中的
is_product_tag()即可 - 原有用于展示缺货商品的短代码、相关商品隐藏缺货、购物车按钮隐藏的逻辑都不受影响,专门的缺货商品展示页依然可以正常展示所有缺货商品
内容的提问来源于stack exchange,提问作者Tim Burkart
相关产品推荐
相关产品推荐

