首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Woocommerce中限制购物车项目的数量

在Woocommerce中限制购物车项目的数量
EN

Stack Overflow用户
提问于 2017-09-02 03:48:02
回答 2查看 14.5K关注 0票数 10

我正在使用Woocommerce,需要以下信息:

  1. As产品正在销售到另一个国家,而那个国家的海关只允许总数量为6个,所以我需要防止客户订购超过6个项目(产品)。
  2. 6是项目或产品的总数。客户可订购1个产品,数量为6个或2个产品,每个数量为3个。海关将仅允许商品总数为6。
  3. 如果购物车中的商品超过6件,则应显示警告,并阻止客户继续结帐。

是否可以将购物车项目限制为6个,并在超过此限制时显示一条消息?

EN

回答 2

Stack Overflow用户

发布于 2017-09-02 06:08:31

如果要限制购物车项目,有两个操作需要检查和控制:

  • 当产品被添加到购物车时(在商店页和产品页中)
  • 当数量在购物车页中更新时

使用woocommerce_add_to_cart_validation过滤器挂钩中的自定义函数,将允许您将购物车项目限制为最多6个,并在超过此限制时显示自定义消息:

代码语言:javascript
运行
复制
// Checking and validating when products are added to cart
add_filter( 'woocommerce_add_to_cart_validation', 'only_six_items_allowed_add_to_cart', 10, 3 );

function only_six_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {

    $cart_items_count = WC()->cart->get_cart_contents_count();
    $total_count = $cart_items_count + $quantity;

    if( $cart_items_count >= 6 || $total_count > 6 ){
        // Set to false
        $passed = false;
        // Display a message
         wc_add_notice( __( "You can’t have more than 6 items in cart", "woocommerce" ), "error" );
    }
    return $passed;
}

使用woocommerce_update_cart_validation过滤器挂钩中的自定义函数,将允许您控制购物车项目数量更新到您的6个购物车项目限制,并在超过此限制时显示自定义消息:

代码语言:javascript
运行
复制
// Checking and validating when updating cart item quantities when products are added to cart
add_filter( 'woocommerce_update_cart_validation', 'only_six_items_allowed_cart_update', 10, 4 );
function only_six_items_allowed_cart_update( $passed, $cart_item_key, $values, $updated_quantity ) {

    $cart_items_count = WC()->cart->get_cart_contents_count();
    $original_quantity = $values['quantity'];
    $total_count = $cart_items_count - $original_quantity + $updated_quantity;

    if( $cart_items_count > 6 || $total_count > 6 ){
        // Set to false
        $passed = false;
        // Display a message
         wc_add_notice( __( "You can’t have more than 6 items in cart", "woocommerce" ), "error" );
    }
    return $passed;
}

代码放在活动子主题(或主题)的function.php文件中,也可以放在任何插件文件中。

这段代码已经过测试,可以正常工作

票数 28
EN

Stack Overflow用户

发布于 2017-09-02 04:36:08

您可以在验证要添加到购物车的产品时添加其他验证参数。根据产品是否可以添加到购物车中,woocommerce_add_to_cart_validation期望返回truefalse值:

代码语言:javascript
运行
复制
/**
 * When an item is added to the cart, check total cart quantity
 */
function so_21363268_limit_cart_quantity( $valid, $product_id, $quantity ) {

    $max_allowed = 6;
    $current_cart_count = WC()->cart->get_cart_contents_count();

    if( ( $current_cart_count > $max_allowed || $current_cart_count + $quantity > $max_allowed ) && $valid ){
        wc_add_notice( sprint( __( 'Whoa hold up. You can only have %d items in your cart', 'your-plugin-textdomain' ), $max ), 'error' );
        $valid = false;
    }

    return $valid;

}
add_filter( 'woocommerce_add_to_cart_validation', 'so_21363268_limit_cart_quantity', 10, 3 );
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46007102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档