Я использую 0 десятичных знаков в wc-settings&tab=general, и это отлично подходит для моего варианта использования. Но теперь добавляется скидка для определенного способа оплаты, который на данный момент установлен на 10 процентов.
Для товара стоимостью 12 долларов США значение скидки округляется до 1, что приводит к итоговому результату. 11 вместо 10,8 из-за настроек 0 десятичных знаков, упомянутых ранее.
Ближе всего я придумал следующий фильтр, но в результате стоимость доставки также выросла с 23 до 23,23 долларов США. Есть идеи, как применить два десятичных знака только к сумме скидки, не мешая чему-либо еще?
// Change woo settings from 0 at the moment in backend to 2 decimals for wallet payment
add_filter( 'wc_get_price_decimals', 'custom_price_decimals_for_wallet_s0dgPHq2',10,1);
function custom_price_decimals_for_wallet_s0dgPHq2( $decimals ) {
// Check if we are on the front-end and WooCommerce session is available
if ( !is_admin() && WC()->session && isset(WC()->session->chosen_payment_method) ) {
// Only change decimal places if the chosen payment method is wallet
if ( WC()->session->chosen_payment_method === 'wallet' ) {
// Set to 2 decimals for wallet payments
$decimals = 2;
return $decimals;
}
// Return the default value for other cases
return $decimals;
}
}
Вот мой код скидки:
add_filter( 'woocommerce_cart_calculate_fees', 'discount_based_on_payment_method_e643e', 10, 1 );
function discount_based_on_payment_method_e643e( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
return;
$targeted_payment_method = 'wallet'; // Here define the desired payment method
global $abc_options;
$wallet_pay_discount_amount = $abc_options['wallet_payment_discount_amount_value'];
$wallet_pay_discount_amount_formated = $wallet_pay_discount_amount / 100; // results in 0.10 for 10% and so on
if( WC()->session->get('chosen_payment_method') === $targeted_payment_method ) {
$cart_subtotal = WC()->cart->get_subtotal();
$discount = $cart_subtotal * $wallet_pay_discount_amount_formated;
$fee_description = '~ ' . $wallet_pay_discount_amount . '% ' . __('Discount Wallet Payment', 'nm-ffk');
$cart->add_fee($fee_description, -$discount);
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... s-settings
Используйте 2 десятичных знака для суммы скидки в Woocommerce с настройками 0 десятичных знаков. ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Строка формата C#: как показать или ноль десятичных знаков, или два десятичных знака?
Anonymous » » в форуме C# - 0 Ответы
- 89 Просмотры
-
Последнее сообщение Anonymous
-