Верх страницы
Обложка к записи Автообновление корзины WooCommerce
Время для прочтения: 0 мин. 20 сек.

Автообновление корзины WooCommerce

Простой сниппет для автоматическоого обновления корзины в WooCommerce при изменении количества товара.

Общий смысл такой: на странице корзины добавляем скрипт в футере сайта, который вешает «слушателя» на поле с количеством товара.

При изменении этого поля делаем програмный клик на кнопку обновления корзины. При этом саму кнопку мы скрываем стилями, чтобы всё было по красоте.

Подключаем скрипт в футер, для чего цепляемся за хук wp_footer в файле functions.php вашей дочерней темы:

add_action(
	'wp_footer',
	function() {
		// Проверяем, что это страница корзины.
		if ( ! is_cart() ) {
			return;
		}

		?>
		<script>
		jQuery( function( $ ) {
			var delay;

			// Вешаем "слушателя".
			$( '.woocommerce' ).on( 'change', 'input.qty', function() {
 
				if ( undefined !== delay ) {
					clearTimeout( delay );
				}
 
				// Делаем задержку в полсекунды, чтобы не генерить 
				// лишние запросы на сервер.
				delay = setTimeout(
					function() {
						// Кликаем на кпоку обновления корзины.
						$( '[name="update_cart"]' ).trigger( 'click' );
					},
					500
				);
 
			} );
		} );
		</script>
		<style>
		/* Прячем кнопку */
		.woocommerce [name="update_cart"] {
			display: none;
		}
		</style>
		<?php
	}
);

Ссылки

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

7 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Дмитрий
Дмитрий
4 лет назад

не работает, на странице выводится:

jQuery( function( $ ) { ... } );

Вадим Чумаченко
4 лет назад

Подскжите как сделать чтоб данный хук работал так же с нажатия на кнопку + или — У меня работает только при вводе через input

Владимир
Владимир
2 лет назад

Стилями вы не полностью удаляете кнопку обновления корзины. Нужно удалить поле ввода

.woocommerce button[name="update_cart"],
.woocommerce input[name="update_cart"] {
	display: none;
}
Предыдущая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы