gpt4 book ai didi

wordpress - woocommerce_coupon_get_discount_amount 的折扣金额不正确

转载 作者:行者123 更新时间:2023-12-04 14:47:32 26 4
gpt4 key购买 nike

如果使用我的优惠券类型,我正在尝试对购物车中最便宜的商品打折:

add_filter('woocommerce_coupon_get_discount_amount', 'wc_cpn_disc', 10, 5);
function wc_cpn_disc($discount, $discounting_amount, $cart_item, $single, $coupon) {
// IF TYPE MATCHES PERFORM CUSTOM CALCULATION
if ($coupon->type == 'cheapest_free'){
global $woocommerce;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
$product_price[] = get_option('woocommerce_tax_display_cart') == 'excl' ? $_product->get_price_excluding_tax() : $_product->get_price_including_tax(); /*Store all product price from cart items in Array */
}
$lowestprice = min($product_price);
$discount = number_format((float)$lowestprice/10,2,'.','');
}

return $discount;
}

折扣金额非常奇怪 - 无论我尝试什么,它永远不会达到我期望的值(value)。起初我以为是百分比折扣,但我希望这是固定金额。我已经尝试在网站的其他地方运行我的 get lowest price 功能位,当最低值(value)项目为 11.95 时它返回 1.195 - 所以我知道这部分有效。但是总价 265.60 的折扣是 23.90 - 我就是不明白!

我只想得到购物车中价格最低的商品,然后打折。

最佳答案

在 Bossman 和其他几个线程的帮助下,我设法解决了这个问题。事实证明我需要更改我的方法 - 下面是完整代码。

add_filter('woocommerce_coupon_get_discount_amount', 'tfcc_cheapest_free', 10, 5);
function tfcc_cheapest_free($discount, $discounting_amount, $cart_item, $single, $coupon) {
// IF TYPE MATCHES PERFORM CUSTOM CALCULATION
if ($coupon->type == 'cheapest_free'){

$items_prices = [];
$items_count = 0;

// Loop through cart items
foreach( WC()->cart->get_cart() as $key => $item ){
// Get the cart item price (the product price)
if ( wc_prices_include_tax() ) {
$price = wc_get_price_including_tax( $item['data'] );
} else {
$price = wc_get_price_excluding_tax( $item['data'] );
}

if ( $price > 0 ){
$items_prices[$key] = $price;
$items_count += $item['quantity'];
}
}

// Only when there is more than one item in cart
if ( $items_count > 1 ) {
asort($items_prices); // Sorting prices from lowest to highest

$item_keys = array_keys($items_prices);
$item_key = reset($item_keys); // Get current cart item key

// Targeting only the current cart item that has the lowest price
if ( $cart_item['key'] == $item_key ) {
return reset($items_prices)/$cart_item['quantity']; // return the lowest item price as a discount
}
} else {
return 0;
}

}

}

我希望这可以帮助将来需要类似功能的其他人。

关于wordpress - woocommerce_coupon_get_discount_amount 的折扣金额不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69745346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com