当在woocommerce中添加多项费用时,是否可以优先考虑它们的顺序?目前看起来woocommerce是按费用值排序的,例如:Fee 1 = £10.00,Fee 2 = £20.00,它们会被这样订购:
是否有可能有一个自定义的顺序在所有?也许添加一个优先级的行动费用附加?我想Fee 2永远是最后的费用项目。这是可以实现的吗?
Fee 2
gojuced71#
在Woocommerce中,费用由WC_Cart_Fee类处理,如果您查看get_fees()方法的源代码,您会看到排序是通过sort_fees_callback()中的费用金额使用uasort() php排序函数进行的。唯一的方法在购物车和结帐页面中对显示的费用进行不同的排序是通过活动的子主题 (或活动主题) 覆盖一些模板
WC_Cart_Fee
get_fees()
sort_fees_callback()
uasort()
**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。
cart/cart-totals.php
checkout/review-order.php
在这两个模板文件中,您将替换以下行:
<?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
通过
<?php foreach ( wc_get_sorted_fees() as $fee ) : ?>
相关:按WooCommerce订单和电子邮件通知的名称排序费用
1条答案
按热度按时间gojuced71#
在Woocommerce中,费用由
WC_Cart_Fee
类处理,如果您查看get_fees()
方法的源代码,您会看到排序是通过sort_fees_callback()
中的费用金额使用uasort()
php排序函数进行的。唯一的方法在购物车和结帐页面中对显示的费用进行不同的排序是通过活动的子主题 (或活动主题) 覆盖一些模板
**1)按名称排序费用:**首先,这里有一个自定义函数,用于按标签名称排序费用:
代码进入您的活动子主题(或活动主题)的function.php文件。
2)显示-覆盖模板
cart/cart-totals.php
和checkout/review-order.php
。在这两个模板文件中,您将替换以下行:
通过
相关:按WooCommerce订单和电子邮件通知的名称排序费用