我有一个woocommerce,我修改为包括产品数量,从商店添加产品到购物车 . 这工作正常 .
现在,当用户点击已经在购物车中的产品上的"add to cart"按钮时,我需要将woocommerce修改为 replace the product quantity (instead of adding it) .
我的第一次尝试是创建一个woocommerce_add_to_cart操作来检查产品是否在购物车中并在添加之前将其删除:
function replace_product_in_cart( $product_key, $quantity ) {
global $woocommerce;
$f = FALSE;
if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
foreach ( WC()->cart->get_cart() as $cart_item ) {
if( $cart_item['key'] == $product_key ) { $f = TRUE; }
}
}
if ( $f ) {
WC()->cart->remove_cart_item($product_key); // this is working fine
}
WC()->cart->add_to_cart($product_key, $quantity); // this is not working
}
删除它的部分,这是正常的 . 但它以后不会添加 . (也许add_to_cart调用引发了我的函数循环?)
我也试过了 set_quantity ,但这不是更新数量,也不是将新产品添加到购物车:
function replace_product_in_cart( $product_key, $product_id, $quantity ) {
global $woocommerce;
if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
foreach ( WC()->cart->get_cart() as $cart_item ) {
if( $cart_item['key'] == $product_key ) {
WC()->cart->set_quantity($product_key, $quantity, TRUE);
}
}
}
}
有任何想法吗?谢谢!