WooCommerce: как добавить подарок в корзину

С помощью этого кода можно настроить добавление определённого товара в корзину. Код рекомендован разработчиками WooCommerce. Оригинал https://docs.woocommerce.com/document/automatically-add-product-to-cart-on-visit/

/**
 * Автоматически добавляет товар в корзину
 */
add_action( 'template_redirect', 'add_product_to_cart' );
function add_product_to_cart() {
	if ( ! is_admin() ) {
		$product_id = 64; //укажите ID товара
		$found = false;
		//Проверка, есть ли товар в корзине
		if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
			foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
				$_product = $values['data'];
				if ( $_product->get_id() == $product_id )
					$found = true;
			}
			// if product not found, add it
			if ( ! $found )
				WC()->cart->add_to_cart( $product_id );
		} else {
			// if no products in cart, add it
			WC()->cart->add_to_cart( $product_id );
		}
	}
}

Как узнать ID товара: в списке товаров наведите на строчку с товаром и запишите ID.

Как узнать ID товара
Как узнать ID товара

Если вы хотите добавить подарок при достижении определённой суммы заказа.

/**
 * Добавляет товар в корзину при достижении определённой суммы заказа
 */
add_action( 'template_redirect', 'add_product_to_cart' );
function add_product_to_cart() {
  if ( ! is_admin() ) {
		global $woocommerce;
		$product_id = 2831; //укажите ID товара
		$found = false;
		$cart_total = 30; //укажите сумму заказа

		if( $woocommerce->cart->total >= $cart_total ) {
			//check if product already in cart
			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 product not found, add it
				if ( ! $found )
					$woocommerce->cart->add_to_cart( $product_id );
			} else {
				// if no products in cart, add it
				$woocommerce->cart->add_to_cart( $product_id );
			}
		}
	}
}

Код добавляется в functions.php дочерней темы или через плагин, который позволяет добавлять пользовательские функции. Внимание — если вы добавите код непосредственно в файл functions.php текущей темы, то он будет стерт при обновлении темы!