Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “变灰”;“缺货”;商业中定制库存数量减少的产品变化_Php_Wordpress_Woocommerce_Product_Stock - Fatal编程技术网

Php “变灰”;“缺货”;商业中定制库存数量减少的产品变化

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(){ ?> 将总库存量与新添加的设置

我使用了的精彩片段为变体添加了一个额外的设置,该设置将主库存减少到变体中设置的数量

我现在面临的问题是,它不会检查这些变体是否缺货(例如,主库存为10瓶,捆绑设置为12瓶)

我用来为总库存减少增加乘数的代码是:

//有关实施说明,请参阅: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;
}