WooCommerce:购物车中的散装数量

时间:2016-04-21 作者:MadLandley

我经营一家WooCommerce商店,有三种包装;单独出售,批量出售6件,批量出售12件。这些包装由一种称为标准的分类法标记,术语为6-pack和12-pack。

下面是我在函数中使用的代码。php,批量产品的数量步骤增加6或12。到目前为止,一切都按计划进行。

问题:当转到购物车页面时,数量步骤不起作用。这意味着任何产品的步骤突然变为1,这意味着客户可以将12改为13,而不是24,以此类推。

关于如何在购物车页面上保留数量步骤,有什么想法吗?

add_filter( \'woocommerce_quantity_input_args\', \'input_set_all_values\', 1, 2 );

function input_set_all_values( $args, $product ) { 
    if (( has_term(\'6-pack\', \'criteria\' ) ) ) {
    $args[\'step\'] = 6;
    $args[\'min_value\'] = 6;
    return $args;
    }
if (( has_term(\'12-pack\', \'criteria\' ) ) ) {
    $args[\'step\'] = 12;
    $args[\'min_value\'] = 12;
    return $args;
    }
else {
    $args[\'step\'] = 1;
    $args[\'min_value\'] = 1;
    return $args;
    }
}

1 个回复
最合适的回答,由SO网友:Sumit 整理而成

问题出现在购物车页面has_termfalse 因为它正在检查购物车页面是否有条款12-pack6-pack. 您还需要向提供post对象/IDhas_term() 作为第三个参数。

更新的代码:-

function input_set_all_values( $args, $product ) { 
    if (( has_term(\'6-pack\', \'criteria\', $product->post ) ) ) {
        $args[\'step\'] = 6;
        $args[\'min_value\'] = 6;
        return $args;
    } else if (( has_term(\'12-pack\', \'criteria\', $product->post ) ) ) {
        $args[\'step\'] = 12;
        $args[\'min_value\'] = 12;
        return $args;
    } else {
        $args[\'step\'] = 1;
        $args[\'min_value\'] = 1;
        return $args;
    }
}

相关推荐