编辑:我需要实现的是允许客户在购物车页面上留下与每个购物车项目相关的消息,该消息将显示在购物车/结帐/订单中...问题是,当我有两个不同的消息时购物车中同一产品的多个变体,我收到了重复的消息(最后一个变体消息)。
这是我的代码中的一段:
...
foreach (WC()->cart->get_cart() as $cartItem) {
update_post_meta($cartItem['product_id'], 'reason', $returnReason, '');
}
...
问题::此循环为我提供了购物车页面上具有变化的产品的重复的自定义帖子元值
到目前为止的结论:
我知道发生这种情况是因为update_post_meta()正在通过product_id
更新元值,并且具有不同变体的产品仍然是相同的产品,具有相同的product_id
...因此当循环到第二时产品变体,它只会覆盖赋予第一个变体产品的价值。
也许这样可以帮助您
我想知道是否有一种方法可以更新产品key
的发布元数据,因为每种产品的变体都是唯一的?
此自定义信息应显示在我的购物车中,所以也许有些update_cart_item_meta()函数会有所帮助吗?
请让我知道是否需要提供更多信息。谢谢。
答案 0 :(得分:0)
我的错误是我认为如果需要在购物车/订单/电子邮件/管理订单中显示自定义帖子元数据,则需要使用update_post_meta()函数更新帖子元。 (现在,当我阅读这句话时,我意识到这是多么愚蠢的假设。)
我使用woocommerce_get_cart_item_from_session
钩子更新了购物车项目数据,而不是发布元数据。
此后,我使用woocommerce_get_item_data
检索了上一步中存储的数据,并将其显示在购物车中。
最后,我使用woocommerce_add_order_item_meta
在管理区域,电子邮件等中显示此数据。
请注意,我上面提到的某些钩子已过时,应替换为当前的钩子。这是因为我在网上找到的大多数教程和示例都已经使用了几年。