gpt4 book ai didi

php - 根据 Woocommerce 中的产品类别提供 2 种不同百分比折扣的优惠券

转载 作者:行者123 更新时间:2023-12-05 08:41:29 24 4
gpt4 key购买 nike

我正在寻找一个 Woocommerce Hook ,它有助于在应用特定优惠券时根据 2 种不同的产品类别限制更改折扣百分比。

例如,如果客户添加特定的优惠券,我会:

  1. 如果购物车商品来自产品类别 A,则该商品将提供 10% 的折扣。
  2. 如果它在产品类别 B 中,它将为该商品提供 20% 的折扣
  3. 更新购物车总价

是否有任何钩子(Hook)可用于实现此目的?有可用的操作 Hook 或过滤器 Hook 吗?

到目前为止,这是我的代码:

add_filter( 'woocommerce_get_discounted_price', 'apply_coupon', 10);
function apply_coupon($price) {
global $woocommerce;
$product=$woocommerce->cart->product;
if(has_term( 'duplex-blinds', 'A' ,$product->id)){
get_product_cart_price;
10% DISCOUNT
}
if(has_term( 'duplex-blinds', 'A' ,$product->id)){
20% DISCOUNT
}
upadte total_discunt_incart($new_discount);
upadte new_price_in_cart($new_price);
upadte new_price_in_checkout($new_price);
return $price;
}

重要的是我需要修改total cart price , total checkout price , total discount price and discount price need to send到 Paypal 。

我的商店有很多钩子(Hook),这就是为什么 woo commerce 默认优惠券计算会出错。我注意到购物车页面中的折扣价格是根据自定义产品值(value)正确计算出来的,但它没有从原始购物车数量中更新,所以总价保持不变。

但是在结账页面折扣价是根据产品原价而不是产品定制价计算的,所以折扣是错误的,而且它也不是总价的最小值......

最佳答案

以下是一种完全不同的实现方式……此答案代码将根据 2 个特定产品类别启用具有 2 个不同折扣百分比的优惠券代码。

举例来说,您的相关产品类别是:

  • 对于 10% 的优惠券折扣,产品类别 slug 将为 'hoodies'
  • 对于 20% 的优惠券折扣,产品类别 slug 将为 't-shirts'

(您可以在代码中使用产品类别 ID、别名或名称)

这将需要 2 个步骤:

  1. 优惠券设置(正确设置您的优惠券代码):
    • 折扣类型:百分比
    • 金额:10
    • 限制 > 产品类别(显示名称):“连帽衫”和“T 恤” enter image description here
    • 如果需要,您可以进行其他设置
  2. 代码函数里面的设置:
    • 优惠券代码:将您的优惠券代码设置为小写
    • 't-shirts' 产品类别别名 (20% 的折扣)

现在是代码(您将在其中添加设置):

add_filter( 'woocommerce_coupon_get_discount_amount', 'alter_shop_coupon_data', 20, 5 );
function alter_shop_coupon_data( $round, $discounting_amount, $cart_item, $single, $coupon ){

## ---- Your settings ---- ##

// Related coupons codes to be defined in this array (you can set many)
$coupon_codes = array('10percent');

// Product categories at 20% (IDs, Slugs or Names) for 20% of discount
$product_category20 = array('hoodies'); // for 20% discount

$second_percentage = 0.2; // 20 %

## ---- The code: Changing the percentage to 20% for specific a product category ---- ##

if ( $coupon->is_type('percent') && in_array( $coupon->get_code(), $coupon_codes ) ) {
if( has_term( $product_category20, 'product_cat', $cart_item['product_id'] ) ){
$original_coupon_amount = (float) $coupon->get_amount();
$discount = $original_coupon_amount * $second_percentage * $discounting_amount;
$round = round( min( $discount, $discounting_amount ), wc_get_rounding_precision() );
}
}
return $round;
}

代码进入事件子主题(或事件主题)的 function.php 文件。经过测试并有效。


这是一个带插图的真实工作示例(带有屏幕截图):

enter image description here

enter image description here

  • 第一个购物车商品(来自 'hoodies' 产品类别)获得 10% 的折扣 $40 x 10% = $4
  • 第二个购物车商品(来自 't-shirts' 产品类别)获得 20% 的折扣 $30 x 20% = $6

所以总折扣是 4 美元 + 6 美元 = 10 美元 …行得通!

关于php - 根据 Woocommerce 中的产品类别提供 2 种不同百分比折扣的优惠券,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49512397/

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