在woocommerce的结帐中添加多个费用时,是否可以优先考虑其顺序?目前看来woocommerce是根据费用值对它们进行订购的,因此,例如:费用1 =£10.00,费用2 =£20.00,他们将像这样被订购:
是否可以有自定义订单?也许对费用附加的操作添加了优先级?我希望Fee 2
永远是最后的费用项目。
这可以实现吗?
答案 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.php
和checkout/review-order.php
。
在两个模板文件中,您将替换以下行:
<?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
作者
<?php foreach ( wc_get_sorted_fees() as $fee ) : ?>