Я пытался ввести скидку в своем магазине с помощью следующего кода:
add_action('woocommerce_before_calculate_totals', 'set_discount', 10 );
function set_discount( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Loop Through cart items
foreach ( $cart->get_cart() as $cart_item ) {
// 50% items discount
$cart_item['data']->set_price( $cart_item['data']->get_price() / 2 );
}
}
- Код работает на странице корзины, скидка применяется как и положено
- Код работает на странице оформления заказа в течение секунды или двух, НО, когда загрузочный счетчик завершил, скидка исчезает, и отображается первоначальная цена
Кажется, установленная цена перезаписывается впроверка по некоторому стандартному запросу AJAX, в котором повторно используется первоначальная цена или что-то еще.Я попытался использовать add_fee () с тем же результатом, я также попытался деактивировать все плагины (кроме, конечно, woocommerce), и я попытался перейти на другую тему - ничего не работает!
Используя Wordpress 5.0.3,Woocommerce 3.5.4, дочерняя тема Storefront 2.4.2
ОБНОВЛЕНИЕ: Добавлены скриншоты .
1) Это то, что должно быть показано наОформить заказ и отображается в течение 1-2 секунд:

2) Это то, что показанопосле завершения загрузки прядильщика - первоначальные цены:
