【问题标题】:how to get particular product quantity from the cart page in the woocommerce如何从 woocommerce 中的购物车页面获取特定的产品数量
【发布时间】:2017-11-21 17:08:19
【问题描述】:

使用此代码:

foreach ( WC()->cart->get_cart() as $cart_item ) {  
   $quantity =  $cart_item['quantity'];
   echo $quantity;
}

我可以获取添加到购物车中的所有产品的数量,但我需要特定产品的数量。

【问题讨论】:

  • 只检查 if 语句 if($cart_item['product_id'] === 'your-id') {

标签: php wordpress woocommerce cart product


【解决方案1】:

您可以遍历购物车项目以获取特定产品 ID 的数量,如下所示:

// Set here your product ID (or variation ID)
$targeted_id = 24;

// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) { 
    if( in_array( $targeted_id, array($cart_item['product_id'], $cart_item['variation_id']) )){
        $quantity =  $cart_item['quantity'];
        break; // stop the loop if product is found
    }
}
// Displaying the quantity if targeted product is in cart
if( isset( $quantity ) && $quantity > 0 ) {
    printf( "<p>" . __("Quantity for Product ID %d is: %d") . "</p>", $targeted_id, $quantity );
}

或者您也可以使用WC_Cart method get_cart_item_quantities(),如下所示:

// Set here your product ID (or variation ID)
$targeted_id = 24;

// Get quantities for each item in cart (array of product id / quantity pairs)
$quantities = WC()->cart->get_cart_item_quantities(); 

// Displaying the quantity if targeted product is in cart
if( isset($quantities[$targeted_id]) && $quantities[$targeted_id] > 0 ) {
    printf( "<p>" . __("Quantity for Product ID %d is: %d") . "</p>", $targeted_id, $quantities[$targeted_id] );
}

注意:最后一种方式不允许定位父变量产品。

【讨论】:

    【解决方案2】:
    WC_Cart::get_cart_item_quantities() – Get cart items quantities
    
    1. 通过$product_id
    // Your product ID
    $product_id = 30;
    
    // Get cart items quantities
    $cart_item_quantities = WC()->cart->get_cart_item_quantities();
    
    // Product quantity in cart - All PHP versions
    $product_qty_in_cart = isset( $cart_item_quantities[ $product_id ] ) ? $cart_item_quantities[ $product_id ] : null;
    
    // Product quantity in cart - Same as the previous one with PHP 7
    $product_qty_in_cart = $cart_item_quantities[ $product_id ] ?? null;
    
    // Result
    echo $product_qty_in_cart;
    
    1. 通过$product
    // Product
    global $product;
    
    // Get cart items quantities
    $cart_item_quantities = WC()->cart->get_cart_item_quantities();
    
    // Product quantity in cart 
    $product_qty_in_cart = $cart_item_quantities[ $product->get_stock_managed_by_id() ];
    
    // Result
    echo $product_qty_in_cart;
    

    【讨论】:

      【解决方案3】:

      1) 制作子主题

      2) 使用以下代码创建一个名为 functions.php 的文件:

      <?php
      if( !function_exists('in_cart_product_quantity') ) {
          function in_cart_product_quantity( $atts ) {
      
              $atts = shortcode_atts(array('id' => ''), $atts, 'product_qty'); // shortcode attributes
              if( empty($atts['id'])) return; // check id not null
      
              if ( WC()->cart ) { // check cart exists
                  $qty = 0; // init qty
                  foreach (WC()->cart->get_cart() as $cart_item) {
                      if($cart_item['product_id'] == $atts['id']) {
                          $qty =  $cart_item['quantity'];
                          break; // stop the loop if product is found
                      }
                  }
                  return $qty;
              }
              return;
          }
          add_shortcode( 'product_qty', 'in_cart_product_quantity' );
      }
      

      3) 使用简码:

      [product_qty id="xxx"]
      

      (将xxx换成你想知道购物车数量的产品id)

      感谢 LoicTheAztec(同一线程)

      【讨论】:

        【解决方案4】:
        $cart = WC()->cart->get_cart();
        $product_cart_id = WC()->cart->generate_cart_id( $product->get_id() );
        if( WC()->cart->find_product_in_cart( $product_cart_id )) {
            echo($cart[$product_cart_id]['quantity']);
        }
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
        【解决方案5】:
        global $woocommerce;
            $items = $woocommerce->cart->get_cart();
        
            foreach($items as $item => $values) { 
                $_product = $values['data']->post; 
                echo "<b>".$_product->post_title.'</b>  <br> Quantity: '.$values['quantity'].'<br>'; 
                $price = get_post_meta($values['product_id'] , '_price', true);
                echo "  Price: ".$price."<br>";
            } 
        

        【讨论】:

          【解决方案6】:

          试试这个:

          <?php
              global $woocommerce;
              $items = $woocommerce->cart->get_cart();
          
                  foreach($items as $item => $values) { 
                      $_product = $values['data']->post; 
                      echo "<b>".$_product->post_title.'</b>  <br> Quantity: '.$values['quantity'].'<br>'; 
                      $price = get_post_meta($values['product_id'] , '_price', true);
                      echo "  Price: ".$price."<br>";
                  } 
          ?>
          

          【讨论】:

          • 通过这个我会得到所有我只需要Y产品数量的XYZ产品...
          猜你喜欢
          • 2021-11-27
          • 1970-01-01
          • 2017-12-10
          • 2021-05-16
          • 2021-08-29
          • 1970-01-01
          • 1970-01-01
          • 2018-07-31
          • 2021-07-25
          相关资源
          最近更新 更多