2

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

  • 小计
  • 费用 2 = 20.00 英镑
  • 费用 1 = 10.00 英镑
  • 全部的

是否有可能有一个自定义订单?也许为附加费用的操作添加优先级?我想Fee 2永远是最后一个收费项目。

这是可以实现的吗?

4

1 回答 1

3

在 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.phpcheckout/review-order.php.

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

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

经过

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

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

于 2018-09-21T13:11:21.120 回答