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



在woocommerce中向结账添加多项费用时,是否可以优先考虑它们的顺序?目前看起来woocommerce按费用值订购它们,例如:费用1 = 10.00英镑,费用2 = 20.00英镑,它们将按如下方式订购:

  • 小计
  • 费用 2 = £20.00
  • 费用 1 = £10.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;
}

代码进入函数.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 ) : ?>

相关:在WooCommerce订单和电子邮件通知上按名称对费用进行排序

最新更新