WP-CITY.RU

Авторские шаблоны WordPress

Недорогой, функциональный сайт или Интернет-магазин
за 10 000 руб!


Заказать интернет-магазин сейчас

Динамическое обновление корзины в Woocommerce после добавления товара

Всем доброго дня, пожалуй начнем с того , как же вывести нашу корзину в верхней части нашего сайта, да и не только в верхней , да где угодно! Главное чтоб нашим пользователям было удобно просматривать что и сколько они добавили в корзину!
woocommerce
Просто берем ниже приведенный код вывода нашей корзины и вставляем в нужное место нашего шаблона:

<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Перейти к оформлению товаров' ); ?>"><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>

Все с этим мы справились, но на мой взгляд логичнее будет сделать так, показывать рядом ссылку на регистрацию или авторизацию в магазине, а когда наш покупатель авторизуется , то вместо ссылок на авторизацию показать ссылку на его личный кабинет:

<?php if ( is_user_logged_in() ) { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Личный кабинет','woothemes'); ?>"><?php _e('Личный кабинет','woothemes'); ?></a>
 <?php } 
 else { ?>
 	<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Авторизация / Регистрация','woothemes'); ?>"><?php _e('Авторизация / Регистрация','woothemes'); ?></a>
 <?php } ?>  / <a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'Перейти к оформлению товаров' ); ?>"><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>

Ну вот с этим мы тоже справились)) Теперь самое основное, нам надо сделать обновление нашей корзина без перезагрузки:
Данный снипет надо вставить в файл functions.php вашего шаблона.

add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );
function woocommerce_header_add_to_cart_fragment( $fragments ) {
	ob_start();
	?>
	<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo sprintf (_n( '%d товар', '%d товаров', WC()->cart->cart_contents_count ), WC()->cart->cart_contents_count ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> 
	<?php
	
	$fragments['a.cart-contents'] = ob_get_clean();
	
	return $fragments;
}

Теперь наша корзина будет обновляться без перезагрузки страницы.
Всем приятной работы)

  1. Денис

    А как сделать чтобы на странице товара она тоже работала?
    Похожие товары нормально работают, а вот кнопка добавления самого товара перезагружает стр

  2. Роман

    Лучше уж использовать что-то по типу такого:
    function woocommerce_header_add_to_cart_fragment($fragments) {
    ob_start();
    ?>

    <?php
    $fragments['div.mini-cart-wrap'] = ob_get_clean();

    return $fragments;
    }

    Логичней и лаконичней так как у WooCommerce есть свой шаблон для мини-корзины.

  3. Артем

    Огромный поклон автору!

  4. евгений (Автор)

    Адрес вашего сайта, для наглядности проблемы.

  5. Лидия

    Здравствуйте, у меня проблема с обновлением корзины, зависает при этом, пыталась вставить ваш код, все осталось также
    плагин всплывающей корзины работает нормально, а сама корзина на сайте виснет. Тему не хотелось бы менять, может подскажете что?

  6. xrdz

    Первый вопрос решил. Надо было ссылку эндпойнта в верхнее условие вставлять.

  7. xrdz

    Дополню ещё — ссылку в ваш код вставлял после наклонного слеша / перед кодом корзины. Cсылка исправно работает, но не исчезает.

  8. xrdz

    Здравствуйте.
    Пытаюсь вставить между профилем и корзиной эндпойнт «Выход» в виде ссылки .ttp://my-site/?customer-logout=true
    Однако ссылка видна, как для авторизованных ,так и для не авторизованных покупателей.
    Когда такую же ссылку вставляешь в меню, то она видна только для авторизованных покупателей.
    Подскажите пожалуйста, как правильно вставить ссылку в ваш код, чтобы она была видна только авторизованным покупателям.
    И ещё один вопрос? Как вставить маленькую миниатюру корзины перед количеством?
    Спасибо.

© 2012–2017 / wp-city.ru / Авторские шаблоны WORDPRESS / Создание сайтов

evgeniy38868     krizisvt@i.ua