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

В этом уроке поделюсь с вами сниппетом кода для 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 в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

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

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

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал