眼眸繁星
更新要按客户订单和电子邮件通知上的名称对费用进行排序,您将使用以下内容:// Custom function that sort displayed fees by name on order itemsfunction wc_get_sorted_order_item_totals_fee_rows( &$total_rows, $tax_display, $order ) { $fees = $order->get_fees(); if ( $fees ) { $fee_names = []; // initializing // First Loop foreach ( $fees as $fee_id => $fee ) { $fee_names[$fee_id] = $fee->get_name(); } asort($fee_names); // Sorting by name // 2nd Loop foreach ( $fee_names as $fee_id => $fee_name ) { $fee = $fees[$fee_id]; if ( apply_filters( 'woocommerce_get_order_item_totals_excl_free_fees', empty( $fee['line_total'] ) && empty( $fee['line_tax'] ), $fee_id ) ) { continue; } $total_rows[ 'fee_' . $fee->get_id() ] = array( 'label' => $fee->get_name() . ':', 'value' => wc_price( 'excl' === $tax_display ? $fee->get_total() : $fee->get_total() + $fee->get_total_tax(), array( 'currency' => $order->get_currency() ) ), ); } }}// Display sorted fees by name everywhere on orders and emailsadd_filter( 'woocommerce_get_order_item_totals', 'display_date_custom_field_value_on_order_item_totals', 10, 3 );function display_date_custom_field_value_on_order_item_totals( $total_rows, $order, $tax_display ){ // Initializing variables $new_total_rows = $item_fees = []; // 1st Loop - Check for fees foreach ( $total_rows as $key => $values ) { if( strpos($key, 'fee_') !== false ) { $item_fees[] = $key; } } if( count($item_fees) > 1 ) { // 2nd Loop - Remove item fees total lines foreach ( $item_fees as $key ) { unset($total_rows[$key]); } $key_start = isset($total_rows['shipping']) ? 'shipping' : ( isset($total_rows['discount']) ? 'discount' : 'cart_subtotal' ); // 3rd Loop - loop through order total rows foreach( $total_rows as $key => $values ) { $new_total_rows[$key] = $values; // Re-inserting sorted fees if( $key === $key_start ) { wc_get_sorted_order_item_totals_fee_rows( $new_total_rows, $tax_display, $order ); } } return $new_total_rows; } return $total_rows;}代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。