在Woocommerce中为类别应用优惠券时,自定义购物车项目价格

阿比拉舍尔

我们的商店里有一些产品,并且正在给顾客一些优惠券。

product -> ABC price 10 

coupon code is 'newcp' discount 20%;

因此,当人们将产品添加到购物车时,价格将为10。

然后他们应用优惠券,然后将原始产品价格显示为10,然后从中计算出20%,最后总计为8

但是现在我们需要根据特定条件进行更改

人们申请产品优惠券时 newbc

1)如果优惠券newcp,然后更改order_item_price order_item_price +3[只有类是果],而这个价格应该在购物车页面,付款页面,以便电子邮件显示

2)从新价格计算折扣从13计算折扣

3)如果移除优惠券,价格将再次回到10

我提出了2个解决方案,但是没有用。

解决方案1

add_action('woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);

function add_custom_price($cart_obj)
    {
    if (is_admin() && !defined('DOING_AJAX')) return;
    foreach($cart_obj->get_cart() as $key => $value)
        {
        $product_id = $value['product_id'];
        $coupon_code = $value['coupon_code'];
        if ($coupon_code != '' && $coupon_code == "newcp")
            {
            global $woocommerce;
            if (WC()->cart->has_discount($coupon_code)) return;
              else
                {
                if (has_term('fruits', 'product_cat', $product_id))
                    {
                    $value['data']->set_price(CURRENT_CART_PRICE + 3);
                    }
                }
            }
        }
    }

解决方案2

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object) {

    global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $coupon = False;

    if ($coupons = WC()->cart->get_applied_coupons()  == False ) 
      $coupon = False;
    else {
        foreach ( WC()->cart->get_applied_coupons() as $code ) {
           $coupon = $code;
        }
    }

    if ($coupon == "newcp"){
        foreach ( $cart_object->get_cart() as $cart_item ) 
        {


            $price = $cart_item['data']->price+3;
            $cart_item['data']->set_price( $price );
        }
    }

}

请帮忙 。

LoicTheAztec

这是实现此目的的一种可能方法:

// Add custom calculated price conditionally as custom data to cart items
add_filter( 'woocommerce_add_cart_item_data', 'custom_add_cart_item_data', 20, 2 );
function custom_add_cart_item_data( $cart_item_data, $product_id ){
    // Your settings below
    $product_categories = array('fruits'); 
    $addition = 3;

    $product = wc_get_product($product_id);
    $the_id = $product->is_type('variation') ? $product->get_parent_id() : $product_id;


    if ( has_term( $product_categories, 'product_cat', $the_id ) )
        $cart_item['custom_price'] = $product->get_price() + $addition;

    return $cart_item;
}

// Set conditionally a custom item price
add_action('woocommerce_before_calculate_totals', 'add_custom_price', 20, 1);
function add_custom_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Only for a DEFINED coupon code ( to be set below )
    $coupon_code = 'newcp';
    if ( ! $cart->has_discount( $coupon_code ) ) return;

    foreach( $cart->get_cart() as $cart_item ) {
        if ( isset($cart_item['custom_price']) ) {
            $cart_item['data']->set_price( (float) $cart_item['custom_price'] );
        }
    }
}

代码进入活动子主题(或活动主题)的function.php文件中。经过测试和工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

应用优惠券时,将 WooCommerce 购物车中的产品销售价格更改为正常价格,但排除某些类别

在Woocommerce中应用优惠券时显示罢工的购物车小计

通过优惠券为非折扣商品添加自定义捆绑购物车折扣

即使WooCommerce中的购物车为空,也可以通过URL中的GET方法应用优惠券折扣

根据Woocommerce中特定购物车数量自动应用优惠券

自动针对特定产品ID在Woocommerce购物车中应用或删除优惠券

在Woocommerce中为特定优惠券代码禁用“购物车需要付款”

隐藏Woocommerce 3中特定产品类别的购物车优惠券字段

关于应用或删除优惠券的woocommerce重新加载购物车页面

WooCommerce 应用优惠券取决于购物车订单项数量

在应用优惠券代码后更改WooCommerce购物车价格

WooCommerce中的自定义条件购物车项目价格

在WooCommerce中显示自定义计算的购物车项目价格

WooCommerce:更改购物车中的删除优惠券链接

在“购物车”页面中删除或隐藏“优惠券”字段-WooCommerce

WooCommerce-为购物车中的每个产品添加自定义价格

如果购物车中的某些产品没有应用优惠券,则防止结帐

根据Woocommerce中的自定义购物车数据更改购物车价格

基于 Woocommerce 中的维度自定义字段的自定义购物车项目价格计算

从Woocommerce 3中的隐藏输入字段自定义价格中设置购物车项目价格

在Woocommerce中基于自定义user_meta自动应用优惠券

如果在 WooCommerce 中应用了优惠券,则自定义结帐字段

如果WooCommerce购物车项目有待补货,请不要使用优惠券

删除/隐藏Woocommerce已添加到购物车消息,但保留/显示优惠券已应用消息

有条件地在WooCommerce上应用生成的优惠券添加到购物车

在Woocommerce微型购物车/购物车中设置自定义计算商品价格

更改Woocommerce购物车项目价格的产品自定义复选框选项

根据自定义字段和数量阈值更改WooCommerce购物车项目价格

在Woocommerce中将购物车项目的价格替换为自定义字段值