我有一个woocommerce,我将其修改为在将产品从商店添加到购物车时包括产品数量。一切正常。
现在,我需要对woocommerce进行修改,以在用户单击购物车中已有产品的“添加到购物车”按钮时替换产品数量(而不是添加产品)。
我的第一个尝试是创建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);
}
}
}
}
有什么想法吗?谢谢!