Артём Мáлков

Получаем общее количество товаров в корзине и их сумму в WooCommerce в WordPress

27 дек17 комм

Многие из вас стараются сделать необычный сайт. И когда речь идет о WordPress, а именно об интернет магазине, – вы можете столкнуться там с готовой мини-корзиной, которая показывает пользователю некую краткую информацию.

Все бы хорошо, но что, если мы хотим сделать свою корзину или ее подобие, основываясь на стандартных метриках?

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

Для того чтобы получить общее число товаров в корзине, воспользуйтесь кодом:

<?php

	echo WC()->cart->get_cart_contents_count();

?>

А для того, чтобы получить итоговую их сумму, воспользуйтесь кодом:

<?php

	echo WC()->cart->get_cart_subtotal();

?>

Кстати говоря, если вы хотите добавить динамики вашей корзине (сделать так, чтобы она обновлялась при добавлении нового товара автоматически), к общему блоку добавьте класс cart_totals, чтобы получилось нечто следующее:

<div class="cart_totals">

	Код корзины

</div>

Эти коды вы без проблем можете использовать в нужном месте темы вашего сайта. Если вам что-то показалось непонятным – пишите об этом в комментариях.

Рекомендуем к просмотру
Разрешаем добавление только одного товара в корзину в WooCommerce
Хаки
Вывод общего количества товаров из корзины и их итоговой суммы в Magento
Хаки
Скидка в процентах на всю корзину без купона в WooCommerce
Посты
17
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 2
    2
      •  Проверенный
    31 янв в 13:46

    Привет, всем. Я новичок в PHP и WordPress-Woocommerce, поэтому заранее прошу прощения за неточности в высказываниях. Делаю интернет магазин, все работало хорошо, но столкнулся с небольшой, как казалось, проблемой. После того, как пользователь совершил заказ, у него в личном кабинете остаются записи заказов, которые он делал ранее, перейдя к одному из них, он может повторить заказ. После нажатия кнопки "Заказать снова", товары этого заказа и в том же количестве попадают в корзину, но проблема в том, что при этом итоговые суммы корзины равны нулю. Может кто сталкивался с такой проблемой? Буду благодарен за помощь.

      • 1
      1067
        •  Команда Pandoge
      1 фев в 12:04

      Резиуан Кодзоков, здравствуйте! Не сталкивался, но постараюсь вам помочь. Самое быстрое - это предоставить доступы (админка + FTP) через форму обратной связи или через сообщения в ВК.

      Если такой возможности нет, то пришлю ряд вопросов, на которые нужно будет ответить.

      • 1
      2
        •  Проверенный
      1 фев в 22:05

      Артём Мáлков, здравствуйте. Буду очень признателен. А как в VK вам написать?

      • 1
      1067
        •  Команда Pandoge
      2 фев в 11:22

      Резиуан Кодзоков, https://vk.com/pandoge_com

    • 1
    1
      •  Пользователь
    16 окт в 12:50

    Подскажите, как посчитать количество товаров в корзине по определенному атрибуту товара в корзине.

    Например, есть продукты c атрибутом seria с одним из значений standart или eco. Есть ли такая функция?

      • 1
      1067
        •  Команда Pandoge
      16 окт в 15:12

      Jamil Galeev, интересная задачка.

      Сегодня посмотрю - напишу.

      • 1
      1067
        •  Команда Pandoge
      изменено 17 окт в 20:30

      Jamil Galeev, здравствуйте! Вот такой вариант.

      Функция (вставляете в functions.php темы сайта):

      function getCountProduct($count = 0) {
      
      	$attr_name = 'seria'; // Название атрибута
      	$attr_value = ['standart', 'eco']; // Необходимые значения
      
      	global $woocommerce;
      
      	$items = $woocommerce->cart->get_cart();
      
      	foreach($items as $item) {
      
      		$_product = wc_get_product($item['data']->get_id());
      
      		if(in_array($_product->get_attribute($attr_name), $attr_value)) {
      
      			$count++;
      
      		}
      
      	}
      
      	return $count;
      
      }

      Использование (в нужном месте шаблона, выведет число товаров в корзине по заданному критерию):

      <?php
      
      	echo getCountProduct();
      
      ?>
    • 1
    1
      •  Пользователь
    17 янв в 15:11

    Добрый день.

    Есть один из пунктов меню в каталоге, в который импортируются товары с экселя (создавая, тем самым, дочерние ресурсы в админке). На сайте эти дочерние ресурсы (товары) формируют каталог, но при этом, если не отметить у каждого "скрыть в меню" - формируют в меню ссылки на себя, хотя карточки для товара у нас не предусмотрены и если перейти на этим ссылкам - будет пустая страница.

    Задача: необходимо скрыть эти дочерние ресурсы из меню, чтобы они там не показывались. И, поскольку поисковики их уже проиндексировали, сделать на этих страницах "404". Не знаю, туда ли я написал, но очень надеюсь на обратную связь.

      • 1
      1067
        •  Команда Pandoge
      19 янв в 04:36

      Алексей Петров, здравствуйте!

      Если это оплачиваемая задача, то напишите через форму обратной связи.

    • 2
    1
      •  Пользователь
    14 янв в 14:34

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

    <div class="cart_totals"><p><?php echo WC()->cart->get_cart_subtotal();?></p></div>

    но не выходит

      • 1
      1067
        •  Команда Pandoge
      14 янв в 16:23

      OlegFedotov, можете показать проблемный сайт?

    • 1
    2
      •  Пользователь
    13 авг в 12:21

    Добрый день. А как можно вывести счетчик -> сколько товаров сейчас лежат в корзине?

    У меня написан скрипт js для мобильной версии и там выводиться просто картинка корзины

    jQuery('body').append('<div class="the_new carta"><a href="#"><img src="/wp-content/themes/home/mobile/cart.png" alt="" /></a></div>');

    а нужно кроме картинки вывести еще и счетчик. Кто может подсказать как это реализовать ?

      • 1
      1067
        •  Команда Pandoge
      13 авг в 13:06

      Даниил Тарасенко, Здравствуйте. Так пробовали:

      jQuery('body').append('<div class="the_new carta"><a href="#"><img src="/wp-content/themes/home/mobile/cart.png" alt="" /> Товаров: <?php echo WC()->cart->get_cart_contents_count(); ?> шт.</a></div>');
      • 2
      2
        •  Пользователь
      13 авг в 14:30

      Почему то это не срабатывает. Выводит как обычную надпись надпись .

      • 1
      1067
        •  Команда Pandoge
      14 авг в 19:16

      Даниил Тарасенко, можете показать сайт и дать доступ в админку?

    • 1
    1
      •  Пользователь
    3 мая в 11:57

    Можно с этим кодом подробнее, где взять код корзины?

    <div class="cart_totals">
    
    	Код корзины
    
    </div>
      • 1
      1067
        •  Команда Pandoge
      3 мая в 13:57

      Талгат Мусалимов, код корзины Вы формируете сами. Для примера, можете вставить на место кода - код вывода общей суммы. Это и будет, в данном случае, ваша корзина.

      Но вообще, статья подробно расписана и этот момент так же пояснен.

Подняться наверх
«Pandoge» - помощник вебмастера