Php “变灰”;“缺货”;商业中定制库存数量减少的产品变化
我使用了的精彩片段为变体添加了一个额外的设置,该设置将主库存减少到变体中设置的数量 我现在面临的问题是,它不会检查这些变体是否缺货(例如,主库存为10瓶,捆绑设置为12瓶) 我用来为总库存减少增加乘数的代码是:Php “变灰”;“缺货”;商业中定制库存数量减少的产品变化,php,wordpress,woocommerce,product,stock,Php,Wordpress,Woocommerce,Product,Stock,我使用了的精彩片段为变体添加了一个额外的设置,该设置将主库存减少到变体中设置的数量 我现在面临的问题是,它不会检查这些变体是否缺货(例如,主库存为10瓶,捆绑设置为12瓶) 我用来为总库存减少增加乘数的代码是: //有关实施说明,请参阅:https://aceplugins.com/how-to-add-a-code-snippet/ /** *简单的产品设置。 */ 函数ace\u add\u stock\u inventory\u乘数\u setting(){ ?> 将总库存量与新添加的设置
//有关实施说明,请参阅:https://aceplugins.com/how-to-add-a-code-snippet/
/**
*简单的产品设置。
*/
函数ace\u add\u stock\u inventory\u乘数\u setting(){
?>
- 将总库存量与新添加的设置进行比较
$multiplier
- 代码中添加了注释和解释
函数过滤器\变量\处于活动状态($active,$variation){
//获取乘数
$multiplier=get_post_meta($variation->get_variation_id(),'u stock_multiplier',true);
//不空
如果(!空($乘数)){
//获取库存数量
$var_stock_count=$variation->get_stock_quantity();
//库存量<乘数
if($var\u stock\u count<$multiplier){
$active=false;
}
}
返回$active;
}
添加过滤器('woocommerce\u variation\u处于活动状态','filter\u woocommerce\u variation\u处于活动状态',10,2);
它不起作用,因为:
$item
变量未在代码中定义
- 您的自定义字段在父变量product中定义
因此,您需要替换:
$multiplier = $item->get_product()->get_meta( '_stock_multiplier' );
通过folling(从父变量产品获取数据):
因此,在您的代码中:
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;
}
add_filter('woocommerce_variation_处于活动状态','my_jazzy_函数',10,2);
函数my_jazzy_函数($active,$variation){
//获取乘数
如果($multiplier=get_post_meta($variation->get_parent_id(),'u stock_multiplier',true){
//获取库存数量
$var_stock_count=(int)$variation->get_stock_quantity();
//如果有5个或更少,则禁用变量,可以始终设置为0
return$var_stock_count惊人,这非常有效。非常感谢。Loic上面的代码有一些格式错误,但您的代码非常有效。我将此标记为最佳答案
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;
}