【问题标题】:Get the total number of items for a specific product inside the cart and display it within the loop获取购物车内特定产品的商品总数并在循环中显示
【发布时间】:2016-08-17 12:05:50
【问题描述】:

我试图弄清楚如何反映或显示用户在循环中的单个项目上添加的项目总数。这是为了表示用户在购物车中添加的特定商品的总数

我在文档的帮助下设法显示了文本,但它似乎获取了购物车内所有物品的所有数量。

<div class="container">

<?php
    $args = array(
        'post_type' => 'product',
    );

    $crate_products = new WP_Query ( $args );
    if ( $crate_products->have_posts() ) : while ( $crate_products->have_posts() ) :
    $crate_products->the_post();

?>

    <div id="post-<?php the_ID() ?>" class="three columns product-post">
    <?php
        global $woocommerce;
        $items = $woocommerce->cart->get_cart();

        foreach($items as $item => $values) {
            $_product = $values['product_id']->post;
            echo "<b>" . '</b>  <br> Quantity: '.$values['quantity'].'<br>';
        }
    ?>

    <?php  wc_get_template_part('content', 'product'); ?>

    </div>

    <?php wp_reset_postdata(); ?>

    <?php endwhile; else: ?>

<?php endif; ?>

<?php wp_reset_query(); ?>

更新

这是我想要产生的概念。当用户在购物车中添加特定数量的特定商品时。然后它将显示一个图标,其中包含该特定项目的总金额。我希望它显示在循环中。

这是一张图片。右上角的数字表示车内有 3 个土豆

【问题讨论】:

  • 是的,只要用户想要添加或减去,它就会更改或更新
  • 是的,只有商品的数量
  • 基本上我需要显示存储在购物车中的特定或特定项目的数量,以便在产品帖子中显示。就像我说的,右上角的数字表示购物车里有 3 个土豆。我显示的代码仍在进行中,它显示了购物车中所有物品的所有数量。我对 PHP 不是很了解
  • 是的,我已将 woocommerce 文件复制到我的主题中

标签: php wordpress loops woocommerce product


【解决方案1】:

$crate_products 是什么以及下面的代码和平?

$args = array( 'post_type' => 'product' );
$crate_products = new WP_Query ( $args );
if ( $crate_products->have_posts() ) : while ( $crate_products->have_posts() ) : $crate_products->the_post();

使用这部分代码就像您要显示与$crate_products 相关的所有项目。但这与购物车无关……

这是经典的购物车循环(与您的代码最接近)。我可以显示购物车中的所有商品,包括任何类型的详细信息或规格、数量……:

<table>
<?php
    $items = WC()->cart->get_cart();

    // Here begins the cart loop
    foreach($items as $item => $values) { 
        $_product = $values['data']->post;
        $product_id = $values['product_id']; // product Id
        $product_title = $_product->post_title // product title
        $product_price = get_post_meta($product_id , '_price', true); // product price
        $product_qty = $values['quantity']; // product quantity
        $productDetails = wc_get_product( $product_id ); // product details array
        // Here in this foreach loop you display each product of the cart
?>
    <tr>
        <td><?php echo $product_title; ?></td>
        <td><?php echo $product_qty; ?></td>
        <td><?php echo $product_price; ?></td>
    </tr>
<?php            
    } 
?>
</table>

----(编辑)----

如果您可以提供包含购物车中一种产品的常见详细信息的 html 结构。
之后,对于您的特殊产品,您可以设置一些条件来显示不同的东西。即使对于非特殊项目,您也可以启用一个条件来禁用基于空元素的某些显示细节。

【讨论】:

  • 抱歉没说清楚。我更新了描述,使其更易于理解。
【解决方案2】:

这是简单的答案!

我已经分成变量,以防你想分解它。

把这个放到产品循环模板中(content-product.php)

  global $woocommerce;
  global $product;

  $curr_prod_id = $product->id;

  $items = $woocommerce->cart->get_cart();

  foreach($items as $item => $values) {
      if ($values['product_id'] == $curr_prod_id) {
          echo '<div class="cart-quantity">';
          echo 'Quantity: '.$values['quantity'];
          echo '</div>';
      };
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2018-07-31
    • 2020-07-13
    • 2021-08-29
    • 1970-01-01
    • 2021-11-27
    • 2021-11-08
    相关资源
    最近更新 更多