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

如何在WooCommerce中设置可变产品全部变体缺货时才隐藏产品

WooCommerce可变产品全变体缺货才整体隐藏解决方案

前置操作

首先进入WooCommerce后台「设置」-「产品」-「库存」页面,取消勾选 在目录中隐藏缺货商品 选项,避免原生逻辑和自定义逻辑冲突。

自定义代码实现

将以下代码添加到你的WordPress主题的functions.php文件中,或者使用Code Snippets这类代码插入工具添加:

// 仅当可变产品所有变体都缺货时,从目录隐藏该产品
add_filter( 'woocommerce_product_is_visible', 'custom_hide_variable_if_all_outofstock', 10, 2 );
function custom_hide_variable_if_all_outofstock( $visible, $product_id ) {
    $product = wc_get_product( $product_id );
    // 仅处理可变产品类型
    if ( $product->is_type('variable') ) {
        $all_variants_out = true;
        // 遍历所有变体校验库存状态
        foreach ( $product->get_available_variations() as $variation ) {
            $variation_obj = wc_get_product( $variation['variation_id'] );
            if ( $variation_obj->is_in_stock() ) {
                $all_variants_out = false;
                break;
            }
        }
        // 所有变体缺货时隐藏整个产品
        if ( $all_variants_out ) {
            return false;
        }
    }
    // 简单产品等其他类型保持原有可见逻辑
    return $visible;
}

// 禁止单独隐藏可变产品下的缺货变体
add_filter( 'woocommerce_hide_out_of_stock_items', '__return_false' );

逻辑说明

  • 代码仅对可变产品生效,简单产品、虚拟产品等其他产品类型的可见性保持原有设置逻辑
  • 只要可变产品存在至少1个有库存的变体,产品就会正常在目录展示,且所有变体(包括缺货的)都会正常显示在产品详情页的选项中
  • 只有当可变产品的所有变体全部处于缺货状态时,才会将整个产品从商店目录、搜索结果等列表页隐藏
  • 缺货的变体在详情页会正常标记缺货状态,不会影响用户的规格选择判断

内容的提问来源于stack exchange,提问作者MrLucas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:45:03