Как перехватить количество товара из корзины Woocommerce и вывести в уведомление?

В данном посте рассматривалось, как сделать уведомление о том, что товар добавлен в корзину -> https://qna.habr.com/q/700268

На этой основе я хочу вывести в уведомление название товара и его количество в корзине.

Т.е. при первом нажатии "Добавлен товар "Название" х1"
При втором нажатии "Добавлен товар "Название" х2" и т.д

Мой код:

jQuery( function( $ ) {
    // Цепляемся за событие adding_to_cart
    $( document.body ).on( 'adding_to_cart', function( event, button ) {
        // Выцепляем инициатора события (ссылка/кнопка)
        var $btn = $( button[0] );
 
        // Пытаемся найти в вёрстке название товара
        var product_title = $btn.parents( 'li.product' ).find( '.woocommerce-loop-product__title' ).text();
 		 var product_qty = $btn.parents('li.woocommerce-mini-cart-item.mini_cart_item').find('span.quantity').val();
    
        if ( product_title ) {
            // Формируем шаблон попапа
            var tpl = '';
      tpl += '<div class="blockUI_flex">';
      tpl += '<div class="blockUI_flex-left">';
      tpl += '<div class="blockUI_subtutle"> ДОБАВЛЕНО </div>';
            tpl += '<div class="">' + product_title +'</div>';
      tpl += '<div class="blockUI_subtutle"> Кол-во: ' + product_qty +' </div>';
      tpl += '</div>';
      tpl += '<div class="blockUI_flex-left"> <div class="blockUI_icon"></div></div>';
 			tpl += '</div>';
            // Выводим шаблон в модальное окно. 
            // Используем blockUI из WooCommerce
            $.blockUI({
                message: tpl,
                timeout: 2000,
                css: {
                    width: '300px',
          top: '22%',
          left: 'auto',
          right: '20px',
          color: '#fff',
          background: '#00c9c3f7',					
                    border: 0,
                    padding: '15px 20px',
          borderRadius: '12px',
                }
            } );
        }
    } );
} );


Предполагал получать количество товара в корзине и мини корзины. Но выдает undefined
Подскажите пожалуйста в чем проблема, посмотреть реализацию можно здесь

6421948293d72717964146.png
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
r3n0
@r3n0
// _ AppSec // Bug Bounty / Legal Hacking
Привет.

Если я всё правильно рассмотрел, у тебя не получится без костылей взять значение количества единиц товара в корзине, потому что на используемой теме оформления это будет выглядеть как Кол-во: 4 × $1,000.00.

Если всё же рискнёшь, то:
var $rtn = $( 'span' );

var product_qty = parseInt( $rtn.parents( 'ul.woocommerce-mini-cart.cart_list.product_list_widget' ).find( 'span.quantity' ).text() ) + 1;


6421bc733b29d243778877.png
Ответ написан
Ваш ответ на вопрос

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

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