在woocommerce中向结帐添加多项费用时,是否可以优先考虑它们的顺序?目前看起来 woocommerce 按费用值订购它们,例如:费用 1 = 10.00 英镑,费用 2 = 20.00 英镑,它们将按如下方式订购:
- 小计
- 费用 2 = 20.00 英镑
- 费用 1 = 10.00 英镑
- 全部的
是否有可能有一个自定义订单?也许为附加费用的操作添加优先级?我想Fee 2
永远是最后一个收费项目。
这是可以实现的吗?
在woocommerce中向结帐添加多项费用时,是否可以优先考虑它们的顺序?目前看起来 woocommerce 按费用值订购它们,例如:费用 1 = 10.00 英镑,费用 2 = 20.00 英镑,它们将按如下方式订购:
是否有可能有一个自定义订单?也许为附加费用的操作添加优先级?我想Fee 2
永远是最后一个收费项目。
这是可以实现的吗?
在 Woocommerce 中,费用由WC_Cart_Fee
类处理,如果您查看方法的源代码get_fees()
,您会看到sort_fees_callback()
使用uasort()
php 排序功能按费用金额进行排序。
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 ) : ?>