添加每个项目的折扣总额作为 WooCommerce 订单项目元数据
Add the discount total for each item as WooCommerce order item metadata
我需要在订单元数据中分别添加每个产品的折扣金额。例如,订单中有十个产品。用户已对产品应用优惠券折扣。计算折扣总额(如果有产品on_sale,则不计入折扣计算)。
但最后我们得到了全额折扣。我需要为收到它的所有产品拆分此折扣,甚至将此值写入订单项目元数据。
为什么我连示例代码都没有?我只是不知道从哪里开始。我唯一想到的就是取总折扣,除以可以打折的产品数量(这些都是订单中除了 on_sale 之外的所有产品),并将得到的数字添加到产品元数据中。但是有一个问题,我不确定这是否是正确的解决方案。您能否就如何解决此问题分享任何建议?
您可以从 woocommerce_checkout_create_order_line_item
action hook 开始,您可以在其中设置自定义订单项元数据。这个钩子有 4 个参数:
$item
订单项(对象),
$cart_item_key
购物车项目键(字符串),
$values
购物车项目(数组),
$order
订单(对象)。
因此您可以使用以下方法从购物车商品 $values
中获取打折后的订单商品总计:
$line_discount = $value['line_subtotal'] - $value['line_total'];
$line_discount_tax = $value['line_subtotal_tax'] - $value['line_tax'];
然后例如一起将行折扣总额保存为自定义订单项元数据:
// Save Line item discount as custom order item meta data
add_action('woocommerce_checkout_create_order_line_item', 'action_checkout_create_order_line_item', 10, 4 );
function action_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
$line_discount = $value['line_subtotal'] - $value['line_total'];
$line_discount_tax = $value['line_subtotal_tax'] - $value['line_tax'];
$item->update_meta_data( '_line_discount', $line_discount + $line_discount_tax );
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
然后您可以使用 WC_Data
方法 get_meta()
从订单项目对象 $item
获取它,例如:
$line_discount = $item->get_meta('_line_discount');
相关:
我需要在订单元数据中分别添加每个产品的折扣金额。例如,订单中有十个产品。用户已对产品应用优惠券折扣。计算折扣总额(如果有产品on_sale,则不计入折扣计算)。
但最后我们得到了全额折扣。我需要为收到它的所有产品拆分此折扣,甚至将此值写入订单项目元数据。
为什么我连示例代码都没有?我只是不知道从哪里开始。我唯一想到的就是取总折扣,除以可以打折的产品数量(这些都是订单中除了 on_sale 之外的所有产品),并将得到的数字添加到产品元数据中。但是有一个问题,我不确定这是否是正确的解决方案。您能否就如何解决此问题分享任何建议?
您可以从 woocommerce_checkout_create_order_line_item
action hook 开始,您可以在其中设置自定义订单项元数据。这个钩子有 4 个参数:
$item
订单项(对象),$cart_item_key
购物车项目键(字符串),$values
购物车项目(数组),$order
订单(对象)。
因此您可以使用以下方法从购物车商品 $values
中获取打折后的订单商品总计:
$line_discount = $value['line_subtotal'] - $value['line_total'];
$line_discount_tax = $value['line_subtotal_tax'] - $value['line_tax'];
然后例如一起将行折扣总额保存为自定义订单项元数据:
// Save Line item discount as custom order item meta data
add_action('woocommerce_checkout_create_order_line_item', 'action_checkout_create_order_line_item', 10, 4 );
function action_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
$line_discount = $value['line_subtotal'] - $value['line_total'];
$line_discount_tax = $value['line_subtotal_tax'] - $value['line_tax'];
$item->update_meta_data( '_line_discount', $line_discount + $line_discount_tax );
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
然后您可以使用 WC_Data
方法 get_meta()
从订单项目对象 $item
获取它,例如:
$line_discount = $item->get_meta('_line_discount');
相关: