2 回答
TA贡献1829条经验 获得超6个赞
将总库存数量与新添加的设置进行比较$multiplier
注释并添加到代码中的解释
function filter_woocommerce_variation_is_active( $active, $variation ) {
// Get multiplier
$multiplier = get_post_meta( $variation->get_variation_id(), '_stock_multiplier', true );
// NOT empty
if ( ! empty( $multiplier ) ) {
// Get stock quantity
$var_stock_count = $variation->get_stock_quantity();
// Stock quantity < multiplier
if( $var_stock_count < $multiplier ) {
$active = false;
}
}
return $active;
}
add_filter( 'woocommerce_variation_is_active', 'filter_woocommerce_variation_is_active', 10, 2 );
TA贡献1802条经验 获得超4个赞
它不起作用,因为:
$item
您的代码中未定义变量。您的自定义字段在父变量产品中定义。
所以你需要更换:
$multiplier = $item->get_product()->get_meta( '_stock_multiplier' );
通过以下方式(从父变量产品获取数据):
$multiplier = get_post_meta( $variation->get_parent_id(), '_stock_multiplier', true );
所以在你的代码中:
add_filter( 'woocommerce_variation_is_active', 'my_jazzy_function', 10, 2 );
function my_jazzy_function( $active, $variation ) {
// Get multiplier
if( $multiplier = get_post_meta( $variation->get_parent_id(), '_stock_multiplier', true ) {
// Get stock quantity
$var_stock_count = (int) $variation->get_stock_quantity();
// if there are 5 or less, disable the variant, could always just set to 0
return $var_stock_count <= $multiplier ? false : $active;
}
return $active;
}
现在应该可以了。
- 2 回答
- 0 关注
- 105 浏览
添加回答
举报