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

WooCommerce:重写产品变体get_stock_quantity时如何获取当前变体对象?

解决WooCommerce特定产品变体重写库存数量的问题

核心问题原因

你当前的add_filter调用只声明接收1个参数,但WooCommerce的woocommerce_product_variation_get_stock_quantity钩子实际传递了两个参数:$value(原库存值)和$this(当前变体对象)。只需调整钩子的参数接收数量,就能拿到变体对象。

解决方案代码

function test_get_digital_stock_quantity( $value, $variation ) {
    // 替换为你需要设置永不缺货的变体SKU,支持多个SKU用数组
    $target_skus = ['YOUR_TARGET_SKU'];
    
    // 检查当前变体是否属于目标SKU
    if ( in_array( $variation->get_sku(), $target_skus ) ) {
        // 返回足够大的数值,确保产品始终显示"有货"状态
        return 9999;
        // 部分WooCommerce版本支持返回-1表示无限库存,可根据实际测试调整
    }
    
    // 非目标变体,保留原库存值逻辑
    return $value;
}
// 关键修改:将第四个参数从1改为2,声明接收2个钩子传递的参数
add_filter( 'woocommerce_product_variation_get_stock_quantity', 'test_get_digital_stock_quantity', 10, 2 );

代码说明

  • 钩子参数调整:add_filter的第四个参数accepted_args设置为2后,自定义函数就能接收第二个参数$variation——也就是当前的产品变体对象。
  • SKU匹配逻辑:通过$variation->get_sku()获取当前变体的SKU,与目标SKU对比,匹配时返回足够大的库存数值,强制产品显示有货状态。
  • 不影响其他变体:非目标变体仍返回原始库存值,不会干扰其他产品的库存管理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:39:53