Правильный способ подсчета количества людей в корзине для продукта, который можно забронировать, - это использовать:
$cart_item['booking']['_qty']
Итак, в вашем коде:
add_filter( 'woocommerce_cart_item_quantity', 'replace_cart_quantity_for_bookings', 20, 3 );
function replace_cart_quantity_for_bookings( $quantity, $cart_item_key, $cart_item ){
// Only for bookable product items
if( isset($cart_item['booking']) && isset($cart_item['booking']['_qty']) ){
$quantity = '<span style="text-align:center; display:inline-block; line-height:10px">'.$cart_item['booking']['_qty'].'<br>
<small>(' . __('persons','woocommerce') . ')</small><span>';
}
return $quantity;
}
Код входит в функции. php файл вашей активной дочерней темы (или активной темы). Протестировано и работает.
Теперь, чтобы получить количество элементов корзины по типу человека для продукта, который можно забронировать, это (дает массив):
$cart_item['booking']['_persons']
, что даст массив, например для 2 разных типа людей в примере ниже:
Array (
[872] => 2
[873] => 2
)