【问题标题】:Custom quantity field doesn't work on Woocommerce archive pages自定义数量字段在 Woocommerce 存档页面上不起作用
【发布时间】:2020-10-22 00:56:04
【问题描述】:

我使用自定义代码为每个产品的商店页面和类别页面添加了一个“数量”字段和“添加到购物车”按钮,并且还设置了数量字段的最小数量、最大数量和步骤产品 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 还是通过 url 工作的?您能否也发布您的答案的代码
  • 所以问题来自 Ajax 添加到购物车按钮(及其数量字段),所以你应该在你的问题中提供相关代码,如果你想有一个有用的答案......还有你实际提供的代码可以简化,因为您不需要像正在做的那样遍历购物车项目……请参阅下面的答案。

标签: php wordpress woocommerce field product-quantity


【解决方案1】:

所描述的问题来自 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 文件中。经过测试并且可以工作。

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 2021-04-08
    • 2016-04-06
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多