В WooCommerce я создал мини-корзину и хочу получить количество товара, доступное в текущей корзине.
Как я уже пробовал это:
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$product_id = $values['product_id'];
if ( $product_id == $id ){
$product_qnty = $values['quantity'];
}
break;
}
Есть ли какая-то одна функция для получения количества товара в корзине?
Может быть, вы должны посмотреть в первую очередь код шаблона woocommerce cart / mini-cart.php где вы найдете официальный связанный код.
Примечание. «Идентификатор элемента» доступен только в цикле элементов WC_Orders, но не в элементе WC_Cart, который является «ключом элемента корзины». Так что вы наверняка говорите об идентификаторе продукта. Но если вы посмотрите код официального шаблона cart / mini_cart, вам нужно будет использовать WC_Product
объект вместо $product_id
…
Таким образом, вы всегда можете создать пользовательскую функцию, такую как (с $product
аргумент, объект WC_Product) что вы можете использовать в соответствующем коде шаблона или в вашем пользовательском коде:
function get_item_qty( $product ){
foreach( WC()->cart->get_cart() as $cart_item )
// for variable products (product varations)
$product_id = $product->get_parent_id();
if( $product_id == 0 || empty( $product_id ) )
$product_id = $product->get_id();
if ( $product_id == $cart_item['product_id'] ){
return $cart_item['quantity'];
// break;
}
return;
}
Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.
ИСПОЛЬЗОВАНИЕ (пример): Здесь мы выведем количество $product
(WC_Product
объект):
// Output the quantity based on the $product object
echo __('Quantity'). ': ' . get_item_qty( $product );
Официальная документация: Структура шаблона + переопределение шаблонов через тему
Других решений пока нет …