我目前是客户,谁卖线,标线涂料,他们希望他们的网站上,在工作方式如下报价: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