循环遍历 Woocommerce 购物车项目以获取跟踪代码

Loop through Woocommerce cart items for a tracking code

我试图遍历 WooCommerce 购物车页面上的每个产品,以便在 JavaScript 跟踪代码中设置一些对象,这些对象应该打印出 ID 和添加到购物车的产品数量在这个对象中。

我使用了 Whosebug 中的一些示例来访问产品并循环遍历它们并创建 JavaScript 对象,但我收到一条错误消息:

post was called incorrectly. Product properties should not be accessed directly

这是我在 functions.php:

中使用的代码
<?php }
    if (is_cart()) { ?>
        <?php 
   global $woocommerce;
   $items = $woocommerce->cart->get_cart();
   $product_names=array(); ?>
    <script>
        var options = [
        <?php foreach ($items as $item => $values) { 
            $_product = $values['data']->post;?> 
            {productid: "<?php echo $_product->ID; ?>"},
        <?php
        }
        ?>
        ]
    </script>
   <?php      
    }
}

我认为我获取产品的方式已被弃用。现在有谁知道如何使用 WooCommerce 以正确的方式做到这一点?另外,如果您知道如何实际获取添加到购物车的产品数量(即每个产品添加了多少项目),那将不胜感激。

您的代码中存在一些错误……请尝试以下操作:

if (is_cart()) { 
    $product_names=array(); 
?>
<script>
    var options = [
    <?php foreach ( WC()->cart->get_cart() as $cart_item ) : ?> 
        {productid: "<?php echo $cart_item['data']->get_id(); ?>"},
    <?php endforeach; ?>
    ]
</script>
<?php      
}

它应该更好地工作而没有错误。

Note: global $woocommerce is replaced by WC() since a while. There is no anymore post object included in the WC_Product Object since Woocommerce 3.0