php - 循环遍历 Woocommerce 购物车项目以获取跟踪代码
问题描述
我正在尝试遍历 WooCommerce 中购物车页面上的每个产品,以便在 JavaScript 跟踪代码中设置一些对象,这些对象应该打印出 ID 和添加到该对象中购物车的产品数量。
我使用了 StackOverflow 中的一些示例来访问产品并遍历它们并创建 JavaScript 对象,但我收到一条错误消息:
帖子被错误地调用。不应直接访问产品属性
这是我在以下代码中使用的代码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
}
它应该更好地工作而没有错误。
注意:
global $woocommerce
被替换WC()
为一会儿。WC_Product
自 Woocommerce 3.0 以来,对象中不再包含 post 对象
推荐阅读
- typescript - 在将字符串数组类型缩小为字符串文字元组时减少样板文件
- c - 在我的自定义 shell 中使用 & 功能后 ctrl-c 不起作用
- json - 在 Node 10/Angular 7 中写入 JSON 文件的最佳方式?
- sql-server - T-SQL 无法在已安装的 docker 卷上创建 SQL Server 数据库文件
- sql - 在 Postgres 函数中使用 WITH... AS (CTE)
- php - 嵌套查询 - 内部查询循环结束外部查询循环
- azure - 如何在 Azure DevOps Pipelines 上批量更改审批者?
- argoproj - 如何在 argoproj 中安排工作流程?
- python - 我一直在我的代码中遇到错误
- jquery - Rails 4 SyntaxError: `$(' 不允许作为全局变量名