在 Woocommerce 中按商品 ID 获取购物车商品数量

Get the cart item quantity by item id in Woocommerce

在 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 template code cart/mini-cart.php 中查看官方相关代码。

注意:"item ID" 仅在 WC_Orders 项循环中可用,但在 WC_Cart 中不可用,后者是 "Cart item Key"。所以你肯定是在谈论产品 ID。但是如果你查看官方模板的代码 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 文件或任何插件文件。


USAGE (例子): 这里我们输出$product[=的数量40=] (WC_Product 对象):

// Output the quantity based on the $product object
echo __('Quantity'). ': ' . get_item_qty( $product );

官方文档:Template Structure + Overriding Templates via a Theme