我有一个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);
            }       
        }
    }
}

有任何想法吗?谢谢!