Если клиент покупает 10 + краски (они могут смешивать и сочетать), они получат 3 бесплатно, но только самые дешевые 3, бесплатно...
Пример приведен ниже:
Пример:
p>
- Купите 10 из x (99,99 фунтов стерлингов), 1 из y (20,99 фунтов стерлингов) и 2 из z (30,99 фунтов стерлингов). Клиент должен получить 3 самых дешевых товара бесплатно, поэтому в этом сценарии он должен получить бесплатно и z, и y...
- Купить 14 из x (99,99 фунтов стерлингов), 2 из y (фунтов стерлингов) 20.00) и 2 из z (30,99 фунтов стерлингов). В этом сценарии клиент должен получить оба y бесплатно и один из z...
Надеюсь, сказанное выше имеет смысл!
Будем очень признательны за любую помощь или указания!
РЕДАКТИРОВАТЬ:
Код, который у меня есть до сих пор: ниже. Он возвращает массив самых дешевых товаров в корзине по порядку и с указанием их количества. Проблема в том, что мне нужно применить скидку только к трем товарам, поэтому, если количество первого товара в массиве равно только двум, мне также нужно применить ее ко второму самому дешевому товару... и так далее... < /p>
function get_cheapest_x_products_in_cart($cat_id)
{
global $woocommerce;
$cat_products = [];
$cheapest_products;
// Add all cart items with correct category to array ($cat_products)
foreach( WC()->cart->get_cart() as $cart_item ) {
if( has_term( $cat_id, 'product_cat', $cart_item['product_id'])) {
$product = wc_get_product( $cart_item['product_id'] );
$price = $product->get_regular_price();
$cat_products[
$cart_item['product_id'] ] = [
'price' => floatval($price),
'quantity' => $cart_item['quantity'],
];
}
}
uasort($cat_products, "sort_this");
$cheapest_three_products = array_slice($cat_products, 0, 3, true);
return $cheapest_three_products;
}
Подробнее здесь: https://stackoverflow.com/questions/467 ... 3-are-free