php购物车购买数量不小于1,php – WooCommerce – 如果数量超过1,则将购物车项目分开处理...

博主遇到一个问题,即在WordPress WooCommerce商店中,当用户尝试添加已存在于购物车中的相同产品时,不是增加数量,而是作为单独的项目添加。他们发现并使用了一个过滤器强制购物车将每个产品视为独立条目。现在,博主正寻求找到一个过滤器,在用户更改购物车中产品的数量时,能正确处理并更新产品数量,而不是添加新条目。他们尝试了一些方法,但尚未找到解决方案,希望得到帮助。
摘要由CSDN通过智能技术生成

我正在尝试执行以下操作:

客户将数量为“1”的产品添加到购物车(数量字段已在单个产品页面上删除,因此只能添加1个).

如果再次添加具有相同变体的相同产品,而不是将数量增加到“2”,则将其添加为单独的产品.

我设法使用下面的过滤器执行上述操作,我在WordPress论坛上找到了它.

add_filter('woocommerce_add_cart_item_data', 'force_separate_item_add', 10, 2);

function force_separate_item_add($cart_item_data, $product_id) {

$unique_cart_item_key = md5(microtime().rand()."Hi Mom!");

$cart_item_data['unique_key'] = $unique_cart_item_key;

return $cart_item_data;

}

这家伙的解释非常好,我明白了:“当一件物品被添加到购物车时,购物车中单个物品的’钥匙’将根据所添加的物品及其相关的元数据创建.如果物品并且它的元数据与购物车中的另一个项目相同,那么生成的密钥也是相同的,并且购物车中已经存在的商品的数量将简单地增加“添加的数量”.

上面的代码只是添加了一个新密钥,然后购物车将它们视为单独的条目.

我现在要做的是在通过购物车更改数量时为此找到合适的过滤器.因此,如果客户将数量更改为“2”,它将为“第二”项生成一个新密钥并单独处理.

我已经尝试了几乎所有可以找到的“购物车”相关过滤器,在WooCommerce文档上搜索,在“更新购物车”,“购物车”等的woocommerce插件文件夹上进行Sublime上的大量搜索,但我害怕我我真的不确定要使用哪个.我最努力的是这一个:

add_action('woocommerce_before_calculate_totals', 'change_cart_item_price');

function change_cart_item_price($cart_object) {

global $woocommerce;

foreach ($woocommerce->cart->cart_contents as $cart_key => $cart_item_array) {

if($cart_item_array['quantity'] > 1 ) {

$cart_item_key = md5(microtime().rand()."Hi Mom!");

$cart_item_data['unique_key'] = $cart_item_key;

$woocommerce->cart->set_quantity($cart_item_key, '1');

}

}

return $cart_object;

}

在这里,我正在浏览购物车对象,检查数量是否大于1,如果是,我分配一个新密钥.我真的不知道我是做正确的事情,还是我完全偏离轨道所以任何指针都会非常感激.

如果您需要更多信息,请告诉我,我会尽力提供一切.

非常感谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值