加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 限制Woocommerce中购物车的数量

发布时间:2020-12-13 21:59:08 所属栏目:PHP教程 来源:网络整理
导读:我正在使用Woocommerce,需要以下内容: 由于产品销往另一个国家,该国家的海关仅允许总量为6,因此我需要阻止客户订购超过6种产品(产品). 6是项目或产品的总和.客户可订购1件产品,数量为6件或2件产品,每件3件.海关只允许总数为6. 如果购物车中有超过6个商品,则
我正在使用Woocommerce,需要以下内容:

>由于产品销往另一个国家,该国家的海关仅允许总量为6,因此我需要阻止客户订购超过6种产品(产品).
> 6是项目或产品的总和.客户可订购1件产品,数量为6件或2件产品,每件3件.海关只允许总数为6.
>如果购物车中有超过6个商品,则会出现警告并阻止客户继续结帐.

是否可以将购物车商品限制为6并在超出此限额时显示消息?

解决方法

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

>将产品添加到购物车时(在商店页面和产品页面中)
>在购物车页面中更新数量时

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

// 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购物车商品限制,并在超出此限制时显示自定义消息:

// 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',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","error" );
    }
    return $passed;
}

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

此代码经过测试和运行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读