You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:15:01