Есть задача применить скидку, если выбран метод оплаты банковские карты. Использую плагин paykeeper на wordpress для приема платежей на сайте.
function add_discount($cart)
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) || is_cart() )
{
return;
}
if (WC()->session->chosen_payment_method == 'paykeeper')
{
$cart->add_fee( 'Оплата банковской картой', - $cart->cart_contents_total * 0.03 );
}
}
add_action( 'woocommerce_before_calculate_totals', 'add_discount', 10 );
Вот такой код отрабатывает как надо, но только один раз. То есть, если выбрать другой способ оплаты, то скидка остается. Мне кажется, что хук запускает функцию только один раз, поэтому обновления не отслеживаются.
Может кто-то делал подобную задачку и нашел решение? Дело в неправильном хуке?