在 WooCommerce 中获取订单总额计算的订单费用和折扣金额
·
问题:在 WooCommerce 中获取订单总额计算的订单费用和折扣金额
基于从购物车总计(小计 + 运费)计算费用,而不将其添加到 Woocommerce 中的订单总价值
我知道如何获得购物车总数。费用和折扣包含在计算中。
// Get cart subtotal & shipping total & fees & discounts
$subtotal = WC()->cart->subtotal;
$shipping_total = WC()->cart->get_shipping_total();
$fees = WC()->cart->get_fee_total();
$discount_excl_tax_total = WC()->cart->get_cart_discount_total();
$discount_tax_total = WC()->cart->get_cart_discount_tax_total();
$discount_total = $discount_excl_tax_total + $discount_tax_total;
// Cart Total
$cart_total = $subtotal + $shipping_total + $fees - $discount_total;
我还需要获取订单总数。我在获得订单折扣和费用时遇到问题。
function filter_woocommerce_get_order_item_totals( $order ) {
// Get order subtotal & shipping total & fees & discounts
$order_subtotal = $order->get_subtotal();
$order_shipping_total = $order->get_shipping_total();
$order_fees = ...
$order_discounts = ...
// Order Total
$order_total = $order_subtotal + $order_shipping_total + $order_fees - $order_discounts;
订单总数将显示在订单已收到/感谢页面上。
如何获取订单总额计算的订单费用和折扣金额?
下面的代码似乎不是正确的答案:
$order_fees = $order->get_fees();
$order_discounts = $order->get_discount_total();
解答
与您的预期相反,$order->get_fees()不会返回数字。这是因为结果是一个数组。
WC_Abstract_Order::get_fees()– 返回此订单中的一系列费用。
所以你会得到:
$order_id = 2878;
// Get $order object
$order = wc_get_order( $order_id );
// Is a WC_Order
if ( is_a( $order, 'WC_Order' ) ) {
$order_fees = 0;
// Get fees
foreach ( $order->get_fees() as $fee_id => $fee ) {
// Get total
$order_fees += $fee['line_total'];
// OR $order_fees += $fee->get_total();
}
echo $order_fees;
}
或者在你的情况下:
// Get subtotal
$order_subtotal = $order->get_subtotal();
// Get shipping total
$order_shipping_total = $order->get_shipping_total();
// Initialize
$order_fee_total = 0;
// Get fees
foreach ( $order->get_fees() as $fee_id => $fee ) {
$order_fee_total += $fee->get_total();
}
// Get discount total
$order_discount_total = $order->get_discount_total();
// Order Total
$order_total = $order_subtotal + $order_shipping_total + $order_fee_total - $order_discount_total;
更多推荐
所有评论(0)