В этом уроке я покажу вам, как сделать так, чтобы при добавлении в корзину товара с определённым ID, автоматически добавлялся в неё и бесплатный товар-подарок.
Также непосредственно про корзину на моём сайте есть отдельный видеоурок, вот ссылка.
В качестве товара-подарка можете взять самый обычный товар, главное поставьте ему нулевую цену и скройте со страниц каталога.
Ниже код, который вы можете вставить в functions.php
текущей темы, не забудьте только подставить ID актуальных товаров на строках 15 и 16.
add_action( 'template_redirect', 'truemisha_auto_gift', 25 ); function truemisha_auto_gift() { // ничего не делаем в админке if ( is_admin() ) { return; } // ничего не делаем если корзина пуста if ( WC()->cart->is_empty() ) { return; } $product_id = 35; // ID товара, при покупке которого дарим подарок $gift_id = 25; // ID товара-подарка // вынес наличие подарка в корзине в отдельную переменную $is_gift_in_cart = WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( $gift_id ) ); // если целевой товар не в корзине if ( ! WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( $product_id ) ) ) { // если подарок присутствует в корзине, то удаляем его из неё if ( $is_gift_in_cart ) { WC()->cart->remove_cart_item( WC()->cart->generate_cart_id( $gift_id ) ); } } else { // если целевой товар в корзине // на всякий проверяем, если подарок не в корзине, то добавляем if ( ! $is_gift_in_cart ) { WC()->cart->add_to_cart( $gift_id ); } } }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Отличная статья! Но мне кажется, что было бы лучше менять цену на уже существующем товаре:) Посложнее, конечно, в реализации, но зато костылей меньше:) Кстати, у автора есть подходящие статьи для разработки, за что отдельное спасибо!
Пожалуйста! :)
Если менять цену уже у присутствующего товара в корзине, то могу порекомендовать код из этого урока
Спасибо, сработало) а подскажите, чтобы несколько комбинаций товар+подарок разных сделать, какие переменные нужно менять?)
Рад, что всё получилось :)
Переменные
$product_id
и$gift_id
. Но тут конечно придётся немного переписать код...Подскажите, а если к 1 товару 3 подарка? как такое сделать??
делаю по вашего коду :
$product_id = 197; // ID товара, при покупке которого дарим подарок
$gift_id = 138; // ID товара-подарка
$gift_id = 151; // ID товара-подарка
$gift_id = 121; // ID товара-подарка
так не работает, в корзину вставляется только последний товар почему то(((
И в конце не забудьте ещё одну закрывающую скобочку
}
.Спасибо огромное!!!!!
А как сделать наоборот? Что бы при добавлении 2-х определенных товаров добавлялся подарок?
Есть одно уточнение. Возможно это изменилось из за обновлений woocommerce, но при удалении товара из корзины, в аргумент нужно передавать не id товара, а его ключ в корзине. Таким образом:
Супер! Спасибо! А как сделать возможность получать подарок при достижении определенной суммы заказа, и подарков несколько, чтоб клиент сам выбрал?
А какой будет код если несколько товаров к которым положен подарок?