Удалить знак минус из отображаемой суммы отрицательных сборов Woocommerce

#php #wordpress #woocommerce #negative-number #fee

#php #wordpress #woocommerce #отрицательное число #плата

Вопрос:

Я разрабатываю систему бронирования, в которой клиент хочет только внести депозит в размере 50 долларов США и отдельно обсудить оставшуюся сумму. Для достижения этой цели я использовал следующий код, чтобы обновить общую цену до 50 долларов США и показать оставшуюся цену.

 function prefix_add_discount_line( $cart ) {
  $deposit = 50;    
  $remaining = $cart->subtotal - 50;
  $cart->add_fee( __( 'Amount Remaining', 'remaining' ) , -$remaining); 
}
add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' ); 

 

В электронных письмах о заказе оставшаяся сумма отображается с символом минуса (-). Пожалуйста, дайте мне знать, как удалить символ минуса в электронных письмах с заказами woocommerce

введите описание изображения здесь

Ответ №1:

Чтобы все отрицательные суммы сборов отображались как положительная сумма в строках итогов заказов WooCommerce, используйте следующее:

 add_filter( 'woocommerce_get_order_item_totals', 'custom_order_total_line_html', 10, 3 );
function custom_order_total_line_html( $total_rows, $order, $tax_display ){
    // Loop through WooCommerce orders total rows
    foreach ( $total_rows as $key_row => $row_values ) {
        // Target only "fee" rows
        if ( strpos($key_row, 'fee_') !== false ) {
            $total_rows[$key_row]['value'] = str_replace('-', '', $row_values['value']);
        }
    }
    return $total_rows;
}
 

Теперь, чтобы сделать это только для уведомлений по электронной почте WooCommerce, используйте вместо этого это:

 add_filter( 'woocommerce_get_order_item_totals', 'custom_order_total_line_html', 10, 3 );
function custom_order_total_line_html( $total_rows, $order, $tax_display ){
    // Only on emails
    if ( ! is_wc_endpoint_url() ) {
        // Loop through WooCommerce orders total rows
        foreach ( $total_rows as $key_row => $row_values ) {
            // Target only "fee" rows
            if ( strpos($key_row, 'fee_') !== false ) {
                $total_rows[$key_row]['value'] = str_replace('-', '', $row_values['value']);
            }
        }
    }
    return $total_rows;
}
 

Код вводится functions.php файл активной дочерней темы (или активной темы). Протестировано и работает.