在Woocommerce购物车和结帐页面中以不同的方式重新排列多项费用

时间:2018-09-21 11:43:42

标签: php wordpress woocommerce checkout fee

在woocommerce的结帐中添加多个费用时,是否可以优先考虑其顺序?目前看来woocommerce是根据费用值对它们进行订购的,因此,例如:费用1 =£10.00,费用2 =£20.00,他们将像这样被订购:

  • 小计
  • 费用2 =£20.00
  • 费用1 =£10.00
  • 总计

是否可以有自定义订单?也许对费用附加的操作添加了优先级?我希望Fee 2永远是最后的费用项目。

这可以实现吗?

1 个答案:

答案 0 :(得分:1)

在Woocommerce中,费用是由WC_Cart_Fee类处理的,如果您查看get_fees()方法的源代码,您将看到在费用中按费用金额进行排序 sort_fees_callback()uasort() php排序功能。

  

对购物车和结帐页面中显示的费用进行不同排序的唯一方法override some templates via the active child theme (or active theme)

1)按名称对费用进行排序:首先,这是一个自定义函数,用于按标签名称对费用进行排序:

function wc_get_sorted_fees(){
    $fees = WC()->cart->get_fees();
    ksort($fees);
    return $fees;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

2)显示-覆盖模板 cart/cart-totals.phpcheckout/review-order.php

在两个模板文件中,您将替换以下行:

<?php foreach ( WC()->cart->get_fees() as $fee ) : ?>

作者

<?php foreach ( wc_get_sorted_fees() as $fee ) : ?>