我的WooCommerce网上商店由多步骤添加到购物车的流程组成,在跳过某个步骤时会向购物车添加免费产品。
所以我想在结帐页面上删除免费产品,一旦选择过程完成,客户将要支付订单。
我知道我必须在一些钩子中使用WC_Cart方法remove_cart_item( $cart_item_key )
。我暂时尝试了一些没有成功的钩子。
我的免费产品ID是:
$free_products_ids = array(10,52,63,85);
我怎样才能做到这一点?
由于
答案 0 :(得分:1)
要删除购物车和结帐页面上的购物车商品,我会在购物车和结帐页面挂钩中使用自定义挂钩功能,这样:
add_action( 'woocommerce_before_cart', 'removing_the_free_cart_items');
add_action( 'woocommerce_before_checkout_form', 'removing_the_free_cart_items');
function removing_the_free_cart_items() {
if ( !WC()->cart->is_empty() ):
// Here your free products IDs
$free_products = array(10,52,63,85);
// iterating throught each cart item
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item){
$cart_item_id = $cart_item['data']->id;
// If free product is in cart, it's removed
if( in_array($cart_item_id, $free_products) )
WC()->cart->remove_cart_item($cart_item_key);
}
endif;
}
此代码位于活动子主题(或主题)的function.php文件中或任何插件文件中。
此代码经过测试并有效。