php 在Woocommerce购物车和结账页面中以不同方式重新订购多个费用

ztyzrc3y  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(116)

当在woocommerce中添加多项费用时,是否可以优先考虑它们的顺序?目前看起来woocommerce是按费用值排序的,例如:Fee 1 = £10.00,Fee 2 = £20.00,它们会被这样订购:

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

是否有可能有一个自定义的顺序在所有?也许添加一个优先级的行动费用附加?我想Fee 2永远是最后的费用项目。
这是可以实现的吗?

gojuced7

gojuced71#

在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订单和电子邮件通知的名称排序费用

相关问题