当前位置: 首页 > 知识库问答 >
问题:

WooCommerce为具有变体的产品复制了自定义post元数据

郗鹏
2023-03-14

编辑:我需要实现的是允许客户在购物车页面上留下与每个购物车项目相关的信息,这些信息将显示在购物车/结账/订单中...问题是,当我在购物车中有相同产品的两个不同变化时,我得到了它们的重复消息(最后一个变化消息)。

这是我代码中的一段:

...
    foreach (WC()->cart->get_cart() as $cartItem) {
       update_post_meta($cartItem['product_id'], 'reason', $returnReason, '');
    }
...

问题:这个循环为购物车页面上有变化的产品提供了重复的自定义post元数据

到目前为止,我的结论是:我理解这是因为update_post_meta()正在通过product_id更新元值,而具有不同变化的产品仍然是相同的产品,具有相同的product_id...所以当这个循环涉及到第二个产品变化时,它只是覆盖给第一个变化产品的值。

也许像这样的东西会有所帮助:我想知道是否有一种方法可以按产品键更新post meta,因为它对于每个产品变体都是唯一的?

这个自定义信息应该显示在我的购物车中,所以也许某种update_cart_item_meta()函数会有所帮助?


如果我需要提供更多信息,请告诉我。谢谢


共有1个答案

梁烨
2023-03-14

我的错误是,我认为如果需要在购物车/订单/电子邮件/管理订单中显示自定义post元数据,则post元数据需要使用update_post_meta()函数进行更新。(现在,当我读这句话时,我意识到这是多么愚蠢的假设。)

我没有发布元数据,而是用woocommerce_get_cart_item_from_session钩子更新了购物车项目数据。

之后,我使用woocommerce_get_item_data来检索我在上一步中存储的数据,并将其显示在购物车中。

最后,我使用woocommerce\u add\u order\u item\u meta在管理区、电子邮件等中显示这些数据。

请注意,我上面提到的一些钩子已经弃用,应该用当前的钩子替换。这是因为我在网上找到的大多数教程和示例都有几年的历史了。

 类似资料:
  • 我正在使用名为高级定制字段(ACF)和WooCommerce的插件。我想为WooCommerce产品变体创建一个文本和图像字段。我在ACF中创建了字段,并将它们分配给。 但是在下没有看到这些字段。我搜索了,看起来我必须写一个自定义代码来适应这些字段。我试着搜索这个问题,我创建的大多数建议和教程都是关于通过代码创建自定义字段,而不是使用ACF,这对我没有帮助,因为字段必须使用ACF,这是因为我使用V

  • 在Woocommerce中,我试图使一个定制的div容器在可变产品的变体缺货时可见,但在缺货时可用。

  • 我成功地在后端的产品变化中的WooCommerce中创建了一个ACF自定义字段。该字段在每个变化中正确显示。 但是在编辑变体中的此字段或其他字段后,我无法再保存整个变体选项卡。加载/保存指示器圆圈继续无限旋转。并且定制字段未显示在前端的单个产品变体中。 我所做的是将以下代码添加到我的: 任何帮助都将不胜感激。

  • 我正在使用这个我在网上找到的脚本,在Woocommerce/WordPress中删除价格范围,只显示可变产品的最低价格,语法如下:From us$xxxx 当变量产品只有一个变体时,我希望脚本做同样的事情。有一个自动的cron(bash+SQL脚本)可以删除不可用的产品。有时,它只留下一个变化的产品,并列出一个价格说明“从XXX美元”的变化看起来是不恰当的,因为只有一个单一的变化)。 如何添加一个

  • 问题在于当我的客户尝试从购物车中编辑一个产品时。因为所有产品都有相同的ID(我只有一个产品),所以添加到购物车的最后一个产品的元加载到文本字段中。我当前使用产品id检索中的元,但该id与购物车中的所有其他产品相同。有没有其他方法可以在不使用/(如或使用会话)的情况下检索元?