SH8DER
@SH8DER
Начинающий Web-разработчик

Как показать скрытый товар в корзине, или подарить подарок пользователю?

Нужно сделать такое: При добавлении хотя бы одного товара в корзину woocommerce, добавлять в неё же ещё и подарок, просто без описания и без ничего, но чтоб клиент видел что у него будет подарок какой-то при доставке или покупке.

Я решил создать скрытый товара, и при проверке корзины добавлять его туда.
Но появилась проблема, подарок не отображается в списке товаров в корзине, а выше списка висит надпись
Этот товар не может быть куплен.


Как мне всё же отобразить там подарок?
Либо я делаю что-то не так, или есть другой способ?

зы - делаю так:
function addGiftToCart() {
	
	$gift_id = 2299;
    
	if ( WC()->cart->get_cart_contents_count() !== 0 ) {
        	wc_print_notice( __( 'Мы дарим Вам подарок!', 'woocommerce' ), 'notice' );
        	WC()->cart->add_to_cart( $gift_id );
	}

}

add_action( 'woocommerce_check_cart_items', 'addGiftToCart' );
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
SH8DER
@SH8DER Автор вопроса
Начинающий Web-разработчик
Вообщем пока копался, всё стало работать.
Есть предположения что нужно обязательно выставить цену на товар, даже 0, и тогда он будет появляться в корзине.
На всякий случай приведу код ниже, вдруг когда нить кому нить пригодится:
function productAlreadyInCart($gift_id) {
	global $woocommerce;
	$items = $woocommerce->cart->get_cart();

	foreach($items as $item => $values) { 
	    $_product =  $values['data']->get_id(); 
		  if ($_product === $gift_id) return true;
	}

	return false;

}

function addGiftToCart() {
	
	$gift_id = 2299;
    
	if ( WC()->cart->get_cart_contents_count() !== 0 ) {
					
		if ( !productAlreadyInCart($gift_id) ) {

	  	wc_print_notice( __( 'Мы дарим Вам подарок!', 'woocommerce' ), 'notice' );
	  	WC()->cart->add_to_cart( $gift_id );
		
		}
	}

}

add_action( 'woocommerce_check_cart_items', 'addGiftToCart' );
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Skeaper
@Skeaper
открыт к предложениям
Товар нельзя "купить", если передаем его количество 0 единиц и без указания его стоимости?
$WC_Cart = new WC_Cart();
$var = $WC_Cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data );
Ответ написан
А как такая идея.
Товар сделайте видимым, положите в отдельную категорию (категория "подарки"), которая не отображается на сайте, и добавляйте.
Цену товару сделайте символическую.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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