使用WooCommerce在WordPress中获取购物车中的商品数量

16

我正在开发一个网站,但遇到了问题。我需要显示购物车中的商品数量,但只需要数量,不要总金额或其他任何内容。只需要商品数量。

我希望在我的“去购物车”链接上显示它,这是一个带有href的图像。但这不是主要问题。主要问题是如何找到一种方法只获取购物车中的商品数量。

我使用安装了Avada的WordPress来自定义WP并获得一些包含功能。但我没有使用avada菜单,我使用自制菜单,并希望在其中显示购物车中的商品数量。

至于“购物侧”,我正在使用WooCommerce。

我看到很多关于显示购物车商品数量和总价钱的钩子的帖子,但我只想显示数量,不需要总价钱。就像这样:购物车商品数量:plein.com网站


你好,欢迎来到 Stack Overflow!你的问题标题中有一个错别字。如果你纠正它,人们就能更容易地找到并回答它了 :) - William Patton
8个回答

32

你好,欢迎来到这个网站,虽然我也是新手! WooCommerce文档实际上有一个精确的代码片段可以做到这一点:

https://docs.woocommerce.com/document/show-cart-contents-total/

在你的情况下,只需获取计数,你可以像这样操作:

Cart Total: <?php echo WC()->cart->get_cart_contents_count(); ?>

科达


12
从您提供的描述中,我理解您希望仅显示购物车计数而不显示其他内容。以下是实现此目标的代码:
请将此代码块添加到header.php或您想要显示此小部件的文件中...
<a class="cart-customlocation" href="<?php echo wc_get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php WC()->cart->get_cart_contents_count(); ?></a>

然后将以下代码块添加到functions.php中

add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');

function woocommerce_header_add_to_cart_fragment( $fragments ) {
    global $woocommerce;

    ob_start();

    ?>
    <a class="cart-customlocation" href="<?php echo wc_get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php WC()->cart->get_cart_contents_count(); ?></a>

    <?php

    $fragments['a.cart-customlocation'] = ob_get_clean();

    return $fragments;

}

只想添加一条注释,如果您正在测试购物车片段,则会缓存它们,因此如果您进行更改,请清除缓存,从购物车中删除产品,然后重新开始以查看这些更改-这让我困扰了一个小时! - rhysclay
我正在使用这个,但它不起作用。我还尝试将 WC()->cart->get_cart_contents_count(); 替换为 $woocommerce->cart->get_cart_contents_count(),但它仍然不起作用。请给一些指针。 - indianwebdevil
非常好的解释,你应该只是添加了WooCommerce文档链接。这就是我想要的。 - Galzor
你忘记了“echo”计数: <a class="cart-customlocation" href="<?php echo wc_get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo WC()->cart->get_cart_contents_count(); ?></a> - blakeage

7

试试这段代码

global $woocommerce;
print_r(count(WC()->cart->get_cart()));

你的答案对我很有效。我会点赞支持你。我需要显示产品的总数量。我的意思是,如果我选择了2件T恤和3个包,根据你的回答它应该显示2而不是5。感谢你的帮助。 - Naren Verma
谢谢你,Mehul。正如@NarenVerma所说,我也有同样的需求。 - jeet singh
1
这里不需要 global $woocommerce; 这一行。你可以将其删除并完全安全。同时,尝试解释一下你在这里做什么。虽然它不是 OP 的问题的答案,但仍有助于人们,因此可能要更具体地说明差异。 - honk31

3

$total_qty = WC()->cart->cart_contents_count;


3

除了Kodaloid的回答之外,如果购物车数量大于0,您也可以只显示购物车计数。

$cartcount = WC()->cart->get_cart_contents_count();
if ($cartcount > 0) { echo $cartcount; }

3

https://gist.github.com/mikejolley/2044101获取:

在header.php文件中添加以下代码。

<a class="cart-contents" href="<?php echo wc_get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo sprintf ( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>

0

get_cart_contents_count() 显示所有产品项目的总数量。例如,您购买了2kg的A产品和1kg的B产品,get_cart_contents_count() 将返回3。

如果您需要显示购物车中有多少产品,请在 functions.php 中执行以下操作:

function count_item_in_cart() {
    $count = 0;
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $count++;
    }
    return $count;
}

然后在你的 PHP 文件中,你可以这样做

<?php echo count_item_in_cart() . " products"; ?>

1
很想知道我为什么会得到-2的原因。 - ale

0

获取商品数量的最佳方法:

  1. 商品数量 >> echo count(WC()->cart->get_cart());
  2. 每个商品的订单数量和商品数量: echo WC()->cart->get_cart_contents_count();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接