繁体   English   中英

自定义数量字段在 Woocommerce 存档页面上不起作用

[英]Custom quantity field doesn't work on Woocommerce archive pages

我已经使用自定义代码为每个产品的商店页面和类别页面添加了一个“数量”字段和“添加到购物车”按钮,并且还根据产品 ID 为数量字段设置了最小数量、最大数量和步长。 这些产品是葡萄酒,对于其中一些产品,您可以购买至少 6 个,步骤为 6,例如 6、12、18、24 等;对于某些产品,您可以购买至少 12 个,步骤为 12,例如 12、24, 36、48 等

这一切都显示正常,但数量和价格不会传递到购物车页面。 无论订购了多少数量,数量始终设置为最小值,并且当从“商店”或“类别”页面订购产品时,购物车页面上仅显示一个单位的价格。

function wpse_quantity_input_default( $args, $product ) {

    $productID = $product->id;

    foreach( WC()->cart->get_cart() as $key => $item ){

            // MINIMUM / MAXIMUM
            if($productID == '566' || $productID == '562' || $productID == '1177' || $productID == '1181' || $productID == '1183' || $productID == '1185' || $productID == '1242' || $productID == '1250' || $productID == '1251' || $productID == '1252' || $productID == '1254') {

                    $args['input_value'] = 12;
                    $args['max_value']  = 240;  // Maximum value (variations)
                    $args['min_value']  = 12;   // Minimum value (variations)
                    $args['step']       = 12;    // Quantity steps

            } else {

                    $args['input_value'] = 6;
                    $args['max_value']  = 120;  // Maximum value (variations)
                    $args['min_value']  = 6;   // Minimum value (variations)
                    $args['step']       = 6;    // Quantity steps

            }

    } 

return $args;

}

add_filter( 'woocommerce_quantity_input_args', 'wpse_quantity_input_default', 1000, 2 );

所描述的问题来自 Ajax 添加到购物车按钮(及其数量字段),因此您应该在问题中提供所有相关代码。

现在,在您提供的代码中,您无需使用 foreach 循环即可使事情复杂化。 可以使用 in_array() 函数以更有效的方式简化您的代码,如下所示:

add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 1000, 2 );
function custom_quantity_input_args( $args, $product ) {
    $products_ids = array(562, 566, 1177, 1181, 1183, 1185, 1242, 1250, 1251, 1252, 1254);
    
    if( in_array( $product->get_id(), $products_ids ) ) {
        $args['input_value'] = 12;
        $args['max_value']  = 240;  // Maximum value (variations)
        $args['min_value']  = 12;   // Minimum value (variations)
        $args['step']       = 12;    // Quantity steps
    } else {
        $args['input_value'] = 6;
        $args['max_value']  = 120;  // Maximum value (variations)
        $args['min_value']  = 6;   // Minimum value (variations)
        $args['step']       = 6;    // Quantity steps
    }
    return $args;
}

代码位于活动子主题(或活动主题)的 functions.php 文件中。 测试和工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM