当前位置: 首页 > 知识库问答 >
问题:

为特定商品类别中的购物车项目设置最小数量

濮阳浩穰
2023-03-14

在WooCommerce中,我试图为特定产品类别的购物车项目设置最低数量。

基于“WooCommerce中特定产品类别的最低购物车项目数量”,以下是我的代码尝试:

add_action( 'woocommerce_check_cart_items', 'wc_min_item_required_qty' );
function wc_min_item_required_qty() {
    $category      = 'games'; // The targeted product category
    $min_item_qty  = 4; // Minimum Qty required (for each item)
    $display_error = false; // Initializing

    // Loop through cart items
    foreach(WC()->cart->get_cart() as $cart_item ) {
        $item_quantity = $cart_item['quantity']; // Cart item quantity
        $product_id    = $cart_item['product_id']; // The product ID

        // For cart items remaining to "Noten" producct category
        if( has_term( $category, 'product_cat', $product_id ) && $item_quantity < $min_item_qty ) {
            wc_clear_notices(); // Clear all other notices

            // Add an error notice (and avoid checkout).
            wc_add_notice( sprintf( 'You should at least pick', $min_item_qty ,'products  for'  ,$category,  'category' ), 'error' );
            break; // Stop the loop
        }
    }
}

它不能像我希望的那样工作,因为为特定产品类别中的第一个购物车项目设置了最低数量,但不是为该特定产品类别中的所有项目全局设置。感谢您的帮助。

共有1个答案

佟翰林
2023-03-14

您需要首先计算目标产品类别中的项目数…然后,当项目数低于定义的最小值时,您可以显示错误通知:

add_action( 'woocommerce_check_cart_items', 'wc_min_item_required_qty' );
function wc_min_item_required_qty() {
    $category  = 'Games'; // The targeted product category
    $min_qty   = 4; // Minimum Qty required (for each item)
    $qty_count = 0; // Initializing

    // Loop through cart items
    foreach(WC()->cart->get_cart() as $item ) {
        // Count items from the targeted product category
        if( has_term( $category, 'product_cat', $item['product_id'] ) ) {
            $qty_count += $item['quantity'];
        }
    }

    // Display error notice avoiding checkout
    if( $qty_count != 0 && $qty_count < $min_qty ) {
        wc_clear_notices(); // Clear all other notices

        // Add an error notice (and avoid checkout).
        wc_add_notice( sprintf(
            __("You should pick at least %s items from %s category.", "woocommerce"),
            '<strong>' . $min_qty . '</strong>',
            '<strong>' . $category . '</strong>'
        ), 'error' );
    }
}

代码进入函数。活动子主题(或活动主题)的php文件。测试和工作。

 类似资料:
  • 在WooCommerce中,我需要为产品类别的每一项设置最低数量。我搜索了论坛,找到了一些代码,除了它只计算一个产品类别的总数量外,其他代码运行良好: 例如,如果我有两个属于同一产品类别的产品(A和B),并将该类别的最小数量设置为5,则在这种情况下不会出现客户的错误消息: 产品A:3 产品乙:2 我需要一个最小的数量5的每一个产品的类别。 您知道如何更改和优化以下代码吗?

  • 在WooCommerce中,我试图在购物车项目中添加特定类别的产品简短描述。 我发现这段代码将产品简短描述添加到购物车中的所有产品中,但我不知道如何将其缩小到仅显示在特定产品上: 如何使此代码仅显示已定义产品类别的简短说明? 谢谢

  • 我对Java的概念很陌生。我使用核心java设计了一个购物车应用程序。但我无法获得所需的输出。这是我的pojo课程项目。Java语言 主要课程是ShopCartTest。Java语言 有4个pojo的购物车,库存,项目,用户。用户必须能够选择多个数量的多个项目。(对于项目,将创建一个列表,对于数量:映射。其中项目对象是键,数量是值)。用户选择类别、项目,然后选择数量。然后他可以继续结帐。所以当他决

  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅

  • 我正在尝试根据购物车中的产品数量向购物车添加一个名为(送货费)的产品。 购物车示例: 产品A(数量5) 产品B(数量2) 产品C(数量4) 送货费(数量3)**这是3,因为这是添加送货费产品之前添加到购物车中的应计数的行项目总数。 我的代码有问题: 它总是返回一个更高的数字。我认为这是计算每个产品的数量,而不是实际的产品项目。 任何帮助都将不胜感激!

  • 我在基于WooCommerce的网站上工作。我在里面有很多产品,所有产品都被分配到不同的产品类别。 现在,我有一个要求,完全删除一个类别的产品,如“woo猫”。 有许多自定义插件和主题,在其中有条件地使用该类别的id/slg,所以我决定不删除类别,该类别的产品或该类别的相关代码。 但我重定向每一个可能出现的URL到商店页面中的类别是包括 像我重定向-单页的产品,类别列表页,也隐藏从现场搜索等。。。