[英]Automatically add products to WooCommerce cart based on range conditions
What I'm trying to achieve here is the following: 我要在这里实现以下目标:
Working code. 工作代码。
function add_product_if_not_there($product_id) {
$found = false;
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if ( $_product->get_id() == $product_id ) {
$found = true;
break;
}
}
if (!$found)
WC()->cart->add_to_cart( $product_id );
}
function remove_product_if_there($product_id) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if ( $_product->get_id() == $product_id ) {
WC()->cart->remove_cart_item( $cart_item_key );
break;
}
}
}
abstract class FreeCookiesBundles
{
const NoCookiesBundle = 0;
const TwoCookiesBundle = 2;
const ThreeCookiesBundle = 3;
const FourCookiesBundle = 4;
const TwoCookiesBundleId = 4920;
const ThreeCookiesBundleId = 4921;
const FourCookiesBundleId = 4922;
}
function bonus_add_product_to_cart() {
global $woocommerce;
if ( is_admin() )
return ;
$free_product_ids = array(FreeCookiesBundles::TwoCookiesBundleId,
FreeCookiesBundles::ThreeCookiesBundleId,
FreeCookiesBundles::FourCookiesBundleId);
$cookies_bundle = FreeCookiesBundles::NoCookiesBundle;
$cart_total_lvls = array(65, 100, 128);
if ( ($woocommerce->cart->subtotal >= $cart_total_lvls[0]) &&
($woocommerce->cart->subtotal < $cart_total_lvls[1])) {
$cookies_bundle = FreeCookiesBundles::TwoCookiesBundle;
} else if ( ($woocommerce->cart->subtotal >= $cart_total_lvls[1]) &&
($woocommerce->cart->subtotal < $cart_total_lvls[2]) ) {
$cookies_bundle = FreeCookiesBundles::ThreeCookiesBundle;
} else if ( ($woocommerce->cart->subtotal >= $cart_total_lvls[2]) ) {
$cookies_bundle = FreeCookiesBundles::FourCookiesBundle;
}
echo $cookies_bundle;
switch ($cookies_bundle) {
case FreeCookiesBundles::TwoCookiesBundle:
add_product_if_not_there($free_product_ids[0]);
remove_product_if_there($free_product_ids[1]);
remove_product_if_there($free_product_ids[2]);
break;
case FreeCookiesBundles::ThreeCookiesBundle:
add_product_if_not_there($free_product_ids[1]);
remove_product_if_there($free_product_ids[0]);
remove_product_if_there($free_product_ids[2]);
break;
case FreeCookiesBundles::FourCookiesBundle:
add_product_if_not_there($free_product_ids[2]);
remove_product_if_there($free_product_ids[0]);
remove_product_if_there($free_product_ids[1]);
break;
default:
remove_product_if_there($free_product_ids[0]);
remove_product_if_there($free_product_ids[1]);
remove_product_if_there($free_product_ids[2]);
}
}
add_action( 'template_redirect', 'bonus_add_product_to_cart' );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.