WooCommerce:仅获取特定税项的折扣总额 class
WooCommerce: Get discount total only for items from a specific tax class
我只想导出减税商品的优惠券总计(您可以在下图中看到的总计)。
对于这些项目的总数,我也这样做。 仅导出降低税率的订单项目的总和。为此,我使用以下代码:
// gets the total of the order items by tax class
function get_total_order_items_by_tax_class( $order_id, $tax_class = 'reduced-rate' ) {
$order = wc_get_order( $order_id );
// initializes the total of the order items
$total = 0;
foreach( $order->get_items() as $item_id => $order_item ) {
// if the product tax class is equal to "$tax_class"
if ( $tax_class == $order_item['tax_class'] ) {
// sum the total
$total += $order_item['total'];
}
}
return $total;
}
我尝试了类似的方法并添加了行 ():
$order->get_discount_total();
到代码段。但是这会导出每个税项的每个项目的全部折扣 class。
我还尝试了 this answer 中的以下代码:
foreach( $order->get_coupon_codes() as $coupon_code ) {
// Get the WC_Coupon object
$coupon = new WC_Coupon($coupon_code);
$discount_type = $coupon->get_discount_type(); // Get coupon discount type
$coupon_amount = $coupon->get_amount(); // Get coupon amount
}
但也是整单的折扣。
有什么办法可以只得到减税商品的折扣总额吗?
我相信一定有办法,因为订单在每个项目下方显示了这些总数。
但是我找不到获得这些折扣的方法。
我看到 $order
只包含优惠券总额和优惠券税。不是每个订单项。而且 $order_item
似乎没有任何折扣。只有一些行 WC_Coupon_Data_Store_CPT
.
尝试以下方法获取按税计算的订单商品折扣金额 class:
// Get order items discount amount excl. taxes by tax class
function get_order_items_discount_total_by_tax_class( $order_id, $tax_class = 'reduced-rate' ) {
$order = wc_get_order( $order_id );
$discount = 0; // Initializing;
foreach( $order->get_items() as $item ) {
// if the product tax class is equal to "$tax_class"
if ( $tax_class == $item['tax_class'] ) {
$discount += $item->get_subtotal() - $item->get_total(); // Excluding taxes
}
}
return $discount;
}
应该可以。
相关:
我只想导出减税商品的优惠券总计(您可以在下图中看到的总计)。
对于这些项目的总数,我也这样做。
// gets the total of the order items by tax class
function get_total_order_items_by_tax_class( $order_id, $tax_class = 'reduced-rate' ) {
$order = wc_get_order( $order_id );
// initializes the total of the order items
$total = 0;
foreach( $order->get_items() as $item_id => $order_item ) {
// if the product tax class is equal to "$tax_class"
if ( $tax_class == $order_item['tax_class'] ) {
// sum the total
$total += $order_item['total'];
}
}
return $total;
}
我尝试了类似的方法并添加了行 (
$order->get_discount_total();
到代码段。但是这会导出每个税项的每个项目的全部折扣 class。
我还尝试了 this answer 中的以下代码:
foreach( $order->get_coupon_codes() as $coupon_code ) {
// Get the WC_Coupon object
$coupon = new WC_Coupon($coupon_code);
$discount_type = $coupon->get_discount_type(); // Get coupon discount type
$coupon_amount = $coupon->get_amount(); // Get coupon amount
}
但也是整单的折扣。
有什么办法可以只得到减税商品的折扣总额吗? 我相信一定有办法,因为订单在每个项目下方显示了这些总数。 但是我找不到获得这些折扣的方法。
我看到 $order
只包含优惠券总额和优惠券税。不是每个订单项。而且 $order_item
似乎没有任何折扣。只有一些行 WC_Coupon_Data_Store_CPT
.
尝试以下方法获取按税计算的订单商品折扣金额 class:
// Get order items discount amount excl. taxes by tax class
function get_order_items_discount_total_by_tax_class( $order_id, $tax_class = 'reduced-rate' ) {
$order = wc_get_order( $order_id );
$discount = 0; // Initializing;
foreach( $order->get_items() as $item ) {
// if the product tax class is equal to "$tax_class"
if ( $tax_class == $item['tax_class'] ) {
$discount += $item->get_subtotal() - $item->get_total(); // Excluding taxes
}
}
return $discount;
}
应该可以。
相关: