@whatislov

Как при разных суммах корзины сделать разные подарки?

Доброго времени суток! Появился такой вопрос, как можно сделать, чтобы при разной сумме корзины, были разные подарки к ним? Допустим на сумму корзины >= 1000 рублей был один подарок, от 1500 и более другой подарок(если до этого в корзине был подарок за 1000 рублей, он бы убирался из корзины и вместо него добавлялся бы за 1500). Можете подсказать? Сам опирался на официальную документацию -> https://woocommerce.com/document/automatically-add... . И на данный момент смог написать код, только для суммы от 1000 рублей(он приведен ниже).
add_action( 'template_redirect', 'add_product_to_cart' );
function add_product_to_cart() {
  if ( ! is_admin() ) {
		global $woocommerce;
		$product_id = 4548; //айди подарка
		$found = false;
		$cart_total = 1000; //сумма корзины
		$is_gift_in_cart = $woocommerce->cart->find_product_in_cart( $woocommerce->cart->generate_cart_id( $product_id ) );// проверка есть ли подарок в корзине
		if( $woocommerce->cart->total >= $cart_total ) {
			if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
				foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
					$_product = $values['data'];
					if ( $_product->get_id() == $product_id )
						$found = true;
				}
				if ( ! $found )
					$woocommerce->cart->add_to_cart( $product_id );
			} else {
				$woocommerce->cart->add_to_cart( $product_id );
			}
			}
	  		if($woocommerce->cart->total < $cart_total){// если сумма заказа меньше
				if($is_gift_in_cart){
					$woocommerce->cart->remove_cart_item( $woocommerce->cart->generate_cart_id( $product_id ) );// убираем подарок
				}
			}
			}
	}
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Alixx
@Alixx
Я может не до конца поняла проблему (с woocommerce конкретно не работала), но в вашем коде просто не прописаны условия для суммы от 1500... Пропишите так:

// условие: сумма от 1000 до 1499
        if ($woocommerce->cart->total >= $cart_total 
            && $woocommerce->cart->total <= 1499) {
            if (sizeof($woocommerce->cart->get_cart()) > 0) {
                foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {
                    $_product = $values['data'];
                    if ($_product->get_id() == $product_id)
                        $found = true;
                }
                if (!$found)
                    $woocommerce->cart->add_to_cart($product_id);
            } else {
                $woocommerce->cart->add_to_cart($product_id);
            }
        } elseif ($woocommerce->cart->total >= 1500) { // условие: сумма от 1500
            /* ... */
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы