如何更新 WooCommerce 订单商品数量
How to update WooCommerce order item quantity
我需要在结帐页面上或 woocommerce 创建订单时更新 woocommerce 订单中的订单项元数据。
我正在使用插件 visual product configurator 并且它没有将订单中某些项目的正确数量传递给 woocommerce 订单元,尤其是当我在同一产品上使用多个变体时。
是否有 挂钩 供我用来更新特定订单商品的商品数量,我该如何使用它?
插件 returns 我是一个包含所有购物车信息的数组,我只能检查订单中的某个项目是否多次出现 - 如果是,我需要将该项目的数量更改为 woocommerce 中的那个数字 order/database.
我正在考虑将以下挂钩添加到我的 functions.php
add_action('woocommerce_checkout_create_order', 'change_qty', 1,1);
function change_qty($item_qty){
foreach($item_qty as $qty) {
$qty['product_id'] = $id;
$qty['qty'] = $new_qty
$order->update_meta_data('quantity', $new_qty, $id)
}
}
而 $item_qty 是一个包含 item_ids 和调整数量的多维数组。
我面临的另一个问题是我不知道何时需要调用该函数,因为我从结帐页面上的插件中获取了数组,但我认为 WooCommerce 在那一刻尚未创建订单?
结果应该是后台 woocommerce 订单汇总中调整的商品数量。
这可以帮助您(我们挂钩来自支付提供商的支付完成通知)。如果您想在订单创建后立即更新 _qty
,我可以更改我的功能。但目前我只会在付款成功时更新它。:
/**
* Update order item qty after payment successful
*/
add_filter( 'woocommerce_payment_complete_order_status', 'update_order_item_qty', 10, 2 );
function update_order_item_qty( $order_status, $order_id ) {
//Get the order and items
$order = new WC_Order( $order_id );
$items = $order->get_items();
//New qty
$new_qty = 0;
foreach ( $items as $item_id => $item_data ) {
update_meta_data( '_qty', $new_qty, $item_id );
}
}
请试试这是否是您要找的。
要更新订单商品数量,您可以使用WC_Order_Item_Product
set_quantity()
method。
更新订单项(订单项)的正确挂钩是 woocommerce_checkout_create_order_line_item
action hook,它在订单创建期间触发,在数据保存到数据库之前。
add_action('woocommerce_checkout_create_order_line_item', 'change_order_line_item_quantity', 10, 4 );
function change_order_line_item_quantity( $item, $cart_item_key, $cart_item, $order ) {
// Your code goes below
// Get order item quantity
$quantity = $item->get_quantity();
$new_qty = $quantity + 2;
// Update order item quantity
$item->set_quantity( $new_qty );
}
函数参数(变量)已定义并可用:
$item
是 WC_Order_Item_Product
对象(尚未保存到数据库)
$cart_item_key
是相关的购物车项目关键字
$cart_item
是相关的购物车商品数据
$order
是 WC_Order 对象(尚未保存到数据库)
相关:
我需要在结帐页面上或 woocommerce 创建订单时更新 woocommerce 订单中的订单项元数据。 我正在使用插件 visual product configurator 并且它没有将订单中某些项目的正确数量传递给 woocommerce 订单元,尤其是当我在同一产品上使用多个变体时。
是否有 挂钩 供我用来更新特定订单商品的商品数量,我该如何使用它? 插件 returns 我是一个包含所有购物车信息的数组,我只能检查订单中的某个项目是否多次出现 - 如果是,我需要将该项目的数量更改为 woocommerce 中的那个数字 order/database.
我正在考虑将以下挂钩添加到我的 functions.php
add_action('woocommerce_checkout_create_order', 'change_qty', 1,1);
function change_qty($item_qty){
foreach($item_qty as $qty) {
$qty['product_id'] = $id;
$qty['qty'] = $new_qty
$order->update_meta_data('quantity', $new_qty, $id)
}
}
而 $item_qty 是一个包含 item_ids 和调整数量的多维数组。
我面临的另一个问题是我不知道何时需要调用该函数,因为我从结帐页面上的插件中获取了数组,但我认为 WooCommerce 在那一刻尚未创建订单?
结果应该是后台 woocommerce 订单汇总中调整的商品数量。
这可以帮助您(我们挂钩来自支付提供商的支付完成通知)。如果您想在订单创建后立即更新 _qty
,我可以更改我的功能。但目前我只会在付款成功时更新它。:
/**
* Update order item qty after payment successful
*/
add_filter( 'woocommerce_payment_complete_order_status', 'update_order_item_qty', 10, 2 );
function update_order_item_qty( $order_status, $order_id ) {
//Get the order and items
$order = new WC_Order( $order_id );
$items = $order->get_items();
//New qty
$new_qty = 0;
foreach ( $items as $item_id => $item_data ) {
update_meta_data( '_qty', $new_qty, $item_id );
}
}
请试试这是否是您要找的。
要更新订单商品数量,您可以使用WC_Order_Item_Product
set_quantity()
method。
更新订单项(订单项)的正确挂钩是 woocommerce_checkout_create_order_line_item
action hook,它在订单创建期间触发,在数据保存到数据库之前。
add_action('woocommerce_checkout_create_order_line_item', 'change_order_line_item_quantity', 10, 4 );
function change_order_line_item_quantity( $item, $cart_item_key, $cart_item, $order ) {
// Your code goes below
// Get order item quantity
$quantity = $item->get_quantity();
$new_qty = $quantity + 2;
// Update order item quantity
$item->set_quantity( $new_qty );
}
函数参数(变量)已定义并可用:
$item
是WC_Order_Item_Product
对象(尚未保存到数据库)$cart_item_key
是相关的购物车项目关键字$cart_item
是相关的购物车商品数据$order
是 WC_Order 对象(尚未保存到数据库)
相关: