Задать вопрос
@vanoqwerty

Добавление товара в корзину без перезагрузки страницы WordPress+Woocommerce?

При добавлении товара в корзину идёт обновление страницы,это нужно исправить и сделать что бы страница не обновлялась,так как не удобно всё время пролистывать страницу и искать нужный товар,что бы снова его добавить.
Сайт на WordPress+Woocommerce
  • Вопрос задан
  • 4922 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
ikonkov
@ikonkov
На странице архива чтобы аяксом добавлялось в корзину достаточно поставить галочку в админке, в в Woocommerce -> Настройка -> Товары - и там чекбокс "Включить Ajax для кнопки добавления в корзину в архивах"

Но в карте товара все равно перезагружается страница при добавлении.
Я 2 варианта нашел как это исправить.
1. Хуком поменять кнопку в карте товара на кнопку от loop:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_loop_add_to_cart', 30 );

Минус в том, что пропадет выбор количества
2. Без лишнего геморроя установить плагин WooCommerce Ajaxified Cart
Ответ написан
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce
Если тема Storefront - то там на страницах со списком можно включать и по умолчанию включена AJAX механика добавления так как вам надо.
Если тема другая то это может быть сломано.
Для новичков я всегда рекомендую использовать эту тему.
Иначе нужно либо прокачиваться как WP-разработчик или ловить головняки и тратиться на спецов.
Ответ написан
Комментировать
@dimonbikon
Плагин не работает *(((( Хук я так понял это надо в файл Function.php прописывать в своей теме да ?
Ответ написан
Комментировать
@alex_volkov
Веб-разработчик, разработываю сайты на wordpress
Это добавить в functions.php
// Добавление товара в корзину, без перезагрузки страницы
add_filter('woocommerce_add_to_cart_fragments', 'header_add_to_cart_fragment');
function header_add_to_cart_fragment($fragments)
{
	global $woocommerce;
	ob_start();
?>
	<span class="basket-btn__counter"><?php echo sprintf($woocommerce->cart->cart_contents_count); ?></span>
<?php
	$fragments['.basket-btn__counter'] = ob_get_clean();
	return $fragments;
}


А к элементу, который у вас выводит количество товаров добавьте класс "basket-btn__counter"
<span class="basket-btn__counter"></span>

И стилями подравняете
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы