Ücretleri WooCommerce Siparişlerinde ve e-posta bildirimlerinde ada göre sıralayın
Aug 17 2020
WooCommerce siparişlerinde ücretleri varsayılan fiyata göre değil ada göre sıralamam gerekiyor.
Woocommerce alışveriş sepetinde ve ödeme sayfalarında birden fazla ücreti farklı şekilde yeniden sıralamayı kullanarak, ücretleri sepet ve ödeme sayfalarında ada göre sıralamayı başardım. Ancak sipariş onayı ve gönderilen e-postalar için çalışmaz.
Yardımın için teşekkürler.
Yanıtlar
LoicTheAztec Aug 17 2020 at 13:46
Güncellenmiş
Müşteri siparişlerinde ve e-posta bildirimlerinde ücretleri isme göre sıralamak için aşağıdakileri kullanacaksınız:
// Custom function that sort displayed fees by name on order items
function 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 emails add_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;
}
Kod, aktif alt temanızın (veya aktif temanızın) functions.php dosyasına girer. Test edildi ve çalışıyor.
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'