#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 файл активной дочерней темы (или активной темы). Протестировано и работает.