Как привязать количество одного товара к количеству другого?

В этом уроке поделюсь с вами сниппетом кода для functions.php, который позволит синхронизировать количество одного товара в корзине с количеством другого (или всех).

Про страницу корзины у меня на сайте есть отдельный видеоурок, вот ссылка.

синхронизация количества товара в корзине
При смене количества одного из товаров к корзине, например «Толстовка на молнии», количество всех остальных товаров будет устанавливаться в такое же значение автоматически.

Наш сниппет кода будет состоять из двух частей – в первой части кода мы определим, находится ли в корзине наш целевой товар, к количеству которого и будет осуществляться привязка, а во второй части кода – зададим программно количество для других товаров.

add_action( 'template_redirect', 'truemisha_sync_cart_quantities', 25 );
 
function truemisha_sync_cart_quantities() {
 
	// если корзина пуста, то ничего не делаем
	if ( WC()->cart->is_empty() ) {
		return;
	}
 
	// ID целевого товара, к его количеству будет осуществляться привязка
	$product_id = 32;
 
	// запускаем цикл всех товаров в корзине и чекаем целевой
	foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
		// если товар целевой, то узнаем его количество и закидываем в переменную
		if ( $product_id === $cart_item[ 'product_id' ] ) {
			$qty = $cart_item[ 'quantity' ];
			break;
		}
	}
 
	// если переменная количества не существует, то ничего не делаем
	if ( empty( $qty ) ) {
		return;
	}
 
	// устанавливаем это же значение количества всем остальным товарам
	foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
		if ( $product_id !== $cart_item[ 'product_id' ] ) {
			WC()->cart->set_quantity( $cart_item_key, $qty );
		}
	}
}

Хочу также добавить, если вы хотите синхронизировать между собой только два товара, а не все товары в корзине, то можете немного изменить это условие:

if ( 31 == $cart_item[ 'product_id' ] ) { // 31 ID "созависимого" товара

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 1

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.