我目前是客戶,誰賣線,標線塗料,他們希望他們的網站上,在工作方式如下報價:WooCommerce - 買10送3免費 - 只有最便宜的3免費
如果客戶購買10+塗料(它們可以混合和匹配),他們將獲得3個免費的,但只有最便宜的3,免費...
一個例子是像下面:
- 的採購10 x(£99.99),y(£20.99)和z中的2(£30.99)。客戶應該收到3個最便宜的免費,所以,他們應該在這種情況下免費獲得z和y ...
- 購買x(£99.99)中的14,y(£20.00)中的2和z 30.99)。在這種情況下,客戶應該收到免費的兩個y,並且其中一個y ...
我努力在WooCommerce中完成此任務,儘管嘗試的時間超過了我想要承認的範圍!
我希望以上是有道理的!
任何幫助或方向將不勝感激!
編輯:
我到目前爲止的代碼如下。它按順序和數量返回購物車中最便宜產品的數組。問題是,我只需要將折扣應用於3種產品,因此如果陣列中的第一個產品的數量僅爲2,我還需要將其應用到第二個最便宜的產品...等等...
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;
}
你試過了什麼?這種修改的哪部分是你與*掙扎? – ProEvilz
@ProEvilz對不起,我應該提供更多信息。我正在努力的部分,是一種功能,可以讓最便宜的三種產品打折扣,特別是當最便宜的三種產品是一種以上產品的組合時......如果這是有道理的? – Joshua
一個簡單的具有if條件的'foreach()'循環可以處理這個問題,根據您的意見判斷? – ProEvilz