Я использую функцию для применения индивидуальной цены к продуктам в определенной категории в зависимости от роли пользователя.Вот сокращенный пример:
function return_custom_discounted_price($price, $product) {
$current_user = wp_get_current_user();
$newPrice = $price;
$prodID = $product->get_id();
if( in_array('example_customer', $current_user->roles) && !is_admin()){
if(has_term( 'example-category', 'product_cat', $prodID )){
$newPrice = $price * .9;
}
}
return $newPrice;
}
add_filter('woocommerce_product_get_price', 'return_custom_discounted_price', 10, 2);
Однако, если товар этой категории добавляется из сгруппированного товара, скидка в корзине применяется дважды.Например, если товар стоил $ 100, корзина применяется:
(100 * .9) * .9 = 81
, когда оно должно быть просто
100 * .9 = 90
Что странно, потому что код работает нормально, если вы добавляете тот же товар с помощьюсам, а не из сгруппированного продукта.
Я также использую расширение Product Addons WooCommerce для этих сгруппированных продуктов.Я использую jQuery, чтобы показать / скрыть дочерние продукты сгруппированной базы продуктов от их выбора дополнения.Надстройка не применяет никаких изменений стоимости.
Почему это происходит в корзине?