3

在 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;
      }

是否有任何单一功能可以按购物车项目获取购物车项目数量?

4

1 回答 1

4

可能您应该先查看woocommerce 模板代码 cart/mini-cart.php,您会在其中找到官方相关代码。

注意:“item ID”仅在 WC_Orders items 循环中可用,但在作为“Cart item Key”的 WC_Cart 中不可用。所以你肯定在谈论产品ID。但是,如果您查看官方模板 cart/mini_cart 的代码,您将需要使用WC_Product对象而不是$product_id...</p>

因此,您始终可以构建一个自定义函数,例如(带有$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 );

官方文档:模板结构 + 通过主题覆盖模板

于 2017-10-28T13:05:37.630 回答