J'ai un client actuellement qui vendent la peinture ligne de marquage, et ils veulent une offre sur leur site qui fonctionne de la manière suivante:WooCommerce - Acheter 10, obtenez 3 - seulement le moins cher 3 sont libres
Si un client achète 10+ peintures (ils peuvent mélanger et assortir), ils recevront 3 gratuitement, mais seulement 3 moins cher, sans ...
un exemple est comme ci-dessous:
- Acheter 10 x (£ 99,99), 1 de y (£ 20,99), et 2 de z (£ 30,99). Le client devrait recevoir le moins cher 3 gratuit, donc, ils devraient recevoir à la fois z et y gratuitement dans ce scénario ...
- Acheter 14 de x (£ 99.99), 2 de y (£ 20.00) et 2 de z (£ 30.99). Dans ce scénario le client devrait recevoir à la fois de y gratuitement et un de z ...
Je me bats pour accomplir ceci dans WooCommerce, en dépit d'essayer plus longtemps que je voudrais admettre! J'espère que ce qui précède a du sens!
Toute aide ou direction serait grandement appréciée!
EDIT:
Le code que j'ai à ce jour est ci-dessous. Il retourne un tableau des produits les moins chers dans le panier, dans l'ordre, et avec leurs quantités. Le problème est que je dois appliquer la réduction à seulement 3 produits, donc si le premier produit dans le tableau a seulement une quantité de 2, je dois aussi l'appliquer à la deuxième moins chère ... et ainsi de suite ...
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;
}
Qu'avez-vous essayé? De quelle partie de cette modification es-tu * en difficulté *? – ProEvilz
@ProEvilz Désolé, j'aurais dû fournir plus d'informations. La partie avec laquelle je me bats est une fonction qui permet d'obtenir trois produits moins chers, surtout quand les 3 produits les moins chers sont un mélange de plus d'un produit ... si cela a du sens? – Joshua
Une simple boucle 'foreach()' avec une condition 'if' pourrait gérer cela, à en juger par vos commentaires? – ProEvilz