php - Woocommerce 中基于购物车商品数量的条件累进百分比折扣

标签 php wordpress woocommerce cart discount

我想根据购物车中的商品数量获得有条件的累进折扣。将 2 件产品添加到购物车后,您将获得折扣。您添加的产品越多,获得的折扣就越多。

例如:

  • 1 件产品 – 全价(无折扣)
  • 2 件产品 – 全价加总价 5% 的折扣
  • 3 件产品 – 全价加总价 10% 的折扣
  • 4 件产品 – 全价加总价 15% 的折扣
  • 等等……

我在互联网上搜索没有任何成功。在搜索折扣时,我只是使用了 WooCommerce 优惠券功能,或者我得到了一些旧的错误代码……

有什么想法吗?我该怎么做?

这可能吗?

谢谢。

最佳答案

Update - October 2018 (code improved)

是的,可以使用技巧来实现这一目标。通常我们在 WooCommerce 优惠券中使用购物车折扣。这里优惠券不被挪用。我将在此处使用负条件费用,成为折扣

计算:
— 商品数量基于商品数量和购物车中的商品总数
— 百分比为 0.05 (5%),并且随着每个额外项目的增加而增加(如您所问)
— 我们使用打折小计(以避免添加多个由优惠券造成的折叠折扣)

代码:

add_action( 'woocommerce_cart_calculate_fees', 'cart_progressive_discount', 50, 1 );
function cart_progressive_discount( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // For 1 item (quantity 1) we EXIT;
    if( $cart->get_cart_contents_count() == 1 )
        return;

    ## ------ Settings below ------- ##

    $percent = 5; // Percent rate: Progressive discount by steps of 5%
    $max_percentage = 50; // 50% (so for 10 items as 5 x 10 = 50)
    $discount_text = __( 'Quantity discount', 'woocommerce' ); // Discount Text

    ## ----- ----- ----- ----- ----- ##

    $cart_items_count = $cart->get_cart_contents_count();
    $cart_lines_total = $cart->get_subtotal() - $cart->get_discount_total();

    // Dynamic percentage calculation
    $percentage = $percent * ($cart_items_count - 1);

    // Progressive discount from 5% to 45% (Between 2 and 10 items)
    if( $percentage < $max_percentage ) {
        $discount_text .=  ' (' . $percentage . '%)';
        $discount = $cart_lines_total * $percentage / 100;
        $cart->add_fee( $discount_text, -$discount );
    }
    // Fixed discount at 50% (11 items and more)
    else {
        $discount_text .=  ' (' . $max_percentage . '%)';
        $discount = $cart_lines_total * $max_percentage / 100;
        $cart->add_fee( $discount_text, -$discount );
    }
}

代码位于您的事件子主题的 function.php 文件中。已测试并有效。

When using FEE API for discounts (a negative fee), taxes are always applied.


引用资料:

关于php - Woocommerce 中基于购物车商品数量的条件累进百分比折扣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39336389/

相关文章:

php - 如何在 WordPress/WooCommerce 3+ 中将自定义字段添加到评论表单

php - MySQL 带回多个总数

php - 一旦执行就停止条件

php - 如何从 PHP 快速制作多个略有不同的插入

php - 找出具有特定元值的帖子是否存在?

php - Woocommerce 根据数量和变化更改价格

php - 创建大量目录,每个目录包含几个文件,还是创建包含大量文件的更少目录?

javascript - PrettyPhoto 模式打开时禁用键盘导航 (Wordpress)

php - 使用 PHP Hook 替换 Woocommerce 画廊图像 src

php - 如何使用 WooCommerce 检索 cart_item_data?