php - 发送有关 woocommerce 购物车更新的额外数据
问题描述
对于每个购物车项目,我在 WooCommerce 购物车中都有一个自定义输入字段。当有人单击更新购物车时,我想将额外数据发送到服务器并处理该数据并将其添加到当前购物车中。
我在任何地方都找不到如何做到这一点。这甚至可能吗?
我试过了:
$_POST 变量中的woocommerce_update_cart_action_cart_updated 自定义数据不可用
每次更改输入字段时,通过自定义 javascript运行 ajax 请求。但这会干扰更新 WooCommerce 购物车的常规方式。好多bug...
更新购物车之前的钩子 我找不到在更新购物车之前是否有发送额外数据的钩子。
解决方案
最后,解决方案非常简单。由于购物车是常规 HTML 表单,您可以添加自定义输入数据。当购物车更新时,所有表单数据都被序列化并使用 ajax 发送。您只需要在输入字段上设置正确的名称属性。
它采取了以下步骤:
- 复制 woocommerce 购物车模板。
- 在购物车项目 foreach 循环中添加您的自定义输入
给它一个正确的名字。像这样:
name="cart[<?php echo $cart_item_key; ?>][your_custom_key]"
使用钩子:
woocommerce_update_cart_action_cart_updated
在这个钩子中,您可以轻松访问 $_POST['cart'] 变量并执行您的操作。例如:
$cart = WC()->cart->cart_contents; // loop over the cart foreach($_POST['cart'] as $cartItemKey => $values) { $cartItem = $cart[$cartItemKey]; $yourCustomValue = $values['your_custom_key']; // process the value, do something with it... $cartItem['your_custom_key'] = $yourCustomValue; WC()->cart->cart_contents[$cartItemKey] = $cartItem; }
等等瞧。现在,当您填写输入字段并更新购物车时,数据将存储在购物车中。现在,例如,您可以在存储新订单时保存额外的购物车数据或使用这些数据来计算费用。
推荐阅读
- reactjs - 自动完成 Mui 测试,模拟更改不起作用
- linux - 通过特定网络接口路由 HTTP
- python - 如何让方法在类外查找类内部以进行范围界定
- python - 如何对时间实例进行分组、查找其持续时间并根据特定条件求和(在 R 或 Python 中)
- python - 如何从 python 中的网页获取 localStorage 属性?
- python - TextMate 2中的Python文本折叠不折叠列表/元组/字典
- database - 为什么在数据库中需要编码
- c# - ASP.Net Core MVC 在按下特定按钮时禁用验证
- google-cloud-platform - 为不同的时间间隔(小时和天)配置 cron 计划
- kotlin - Kotlin - 有没有办法将属性值传递给另一个具有同名属性的对象?