在 WooCommerce 中对特定类别的最便宜商品进行折扣

2024-01-06

我喜欢根据产品类别打折 Woocommerce 中最便宜的购物车商品。基于"Woocommerce 中成本较低的产品的购物车折扣 https://stackoverflow.com/questions/49693564/cart-discount-for-product-that-cost-less-in-woocommerce/49698427#49698427"完美运行的答案代码。

但如何使其仅适用于特定的产品类别。

这个想法是在购物车中有 2 种产品,并为特定产品类别的最便宜的产品提供折扣。


Updated- 限定产品类别中的 2 件商品。

以下将对特定产品类别执行相同的操作(将在代码中定义):

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

    // Settings
    $categories = ['tshirts']; // Your product categories (coma separated)
    $percentage = 10; // 10 % discount

    // Only for 2 items or more
    if ( $cart->get_cart_contents_count() < 2 ) return;

    // Initialising
    $discount = 0;
    $item_prices = array();

    // Loop though each cart items and set prices in an array
    foreach ( $cart->get_cart() as $cart_item ) {
        if( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {
            $product_prices_excl_tax[] = wc_get_price_excluding_tax( $cart_item['data'] );
        }
    }

    // We set the fee for 2 items of the defined product category
    if( count($product_prices_excl_tax) == 2 ) {

        sort($product_prices_excl_tax);

        $discount = reset($product_prices_excl_tax) * $percentage / 100;

        $cart->add_fee( sprintf( __("Discount on cheapest %s"), '('.$percentage.'%)' ), -$discount );
    }
}

代码位于活动子主题(或活动主题)的 function.php 文件中。它应该有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WooCommerce 中对特定类别的最便宜商品进行折扣 的相关文章

随机推荐

  • AttributeError:“list”对象在 App Engine 中没有属性“has_key”

    我在应用程序引擎的批量加载器方面遇到一些问题 下面我插入了bulkloader yaml hs transformers py 和错误日志 知道是什么产生了这个错误吗 我的hs transformer如果我返回单个实体 只是一个实体 而不是
  • 在 jquery UI datepicker 范围中使用 altFormat 和 altField

    我正在尝试获取 从 和 到 的日期范围 以将其添加到我的数据库中 我使用 altFormat 和 altField 捕获 DB 格式 yy mm dd 的日期 同时使用 Datepicker jquery UI 组件在 UI 中显示正常日期
  • Three.js 图像不是两个警告的幂

    我对从 Three js 收到的警告有疑问 警告是 THREE WebGLRenderer 图像不是2的幂 600x480 调整大小为 512x512我尝试添加 THREE LinearFilter 但它没有任何作用 var texture
  • 与 MediaRecorder Android 6.0 (API 23) 一起使用的“Seekable”文件描述符

    所以我尝试使用我的 Android 作为网络摄像头 我的代码对于 API ParcelFileDescriptor s createPipe 创建用于读取和写入的管道的方法 简而言之 我对管道的写入如下所示 ParcelFileDescri
  • 从文档目录中的文件夹创建 ZIP 文件 - Objective C (ARC)

    我有一个使用 ARC 开发的 iPhone 应用程序 我的文档目录中有一个文件夹 其中包含一堆图像 我需要将其压缩并通过电子邮件发送 我的项目使用ARC 有人有任何对我有帮助的示例代码 资源链接吗 我在网上查了一下 发现与 ARC 不兼容
  • 捕获比屏幕大的整个滚动视图[重复]

    这个问题在这里已经有答案了 主要问题是将整个滚动视图保存为位图图像 而不仅仅是屏幕上显示的图像 有没有办法保存整个滚动视图 如果可以的话如何保存 在ScrollView中创建RelativeLayout或LinearLayout以从Layo
  • 使用 gstreamer 将 YUVj420p 像素格式转换为 RGB888

    我使用 gstreamer 1 2 将帧从我的 IP 摄像头馈送到 opencv 程序 流是 640 368 YUVj420p 我想将其转换为RBG888以便能够在我的opencv程序中使用它 那么有没有办法使用 gstreamer 来进行
  • Bash 4.2 中的 IFS 发生变化

    运行这些命令会给出预期的结果 bash version GNU bash version 4 1 11 2 release foo 111 222 333 IFS cat lt lt lt foo 111 222 333 然而 在 Bash
  • 如何从谷歌地图 URL 获取某个位置的地址?

    给定谷歌地图位置的 URL 我希望能够获取该位置的地址 例如给定这个 URL https www google com maps place Eiffel Tower 48 8583701 2 2922926 17z data 3m1 4b
  • 即使 upload_max_size 大于文件大小,$_FILE 上传大文件也会出现错误 1

    我有一个简单的上传表单 enctype multipart form data gt and input type hidden name MAX FILE SIZE value 5900000 gt 以及在 php ini 中应用 通过
  • 将参数传递给 link_to 方法

    如何使用 link to 方法通过 MVC 传递参数 view 如何使用 link to 方法来利用 remove tag 操作 issues controller rb def remove tag parameter issue rem
  • 黑莓无线安装

    我将黑莓应用程序的可交付变量上传到服务器 我希望我的用户从 URL 安装该应用程序 在上传到远程服务器之前 我在本地主机上进行了测试 没问题 但是 当我尝试从服务器下载 jad 文件时 它会显示文件内容 但不会安装应用程序 显示文字 Man
  • AngularJS 与 Django - 模板标签冲突

    我想将 AngularJS 与 Django 一起使用 但是它们都使用 作为他们的模板标签 有没有一种简单的方法可以更改两者之一以使用其他自定义模板标签 对于 Angular 1 0 您应该使用 interpolateProvider ap
  • 高优先级的自定义命令 Windows 服务

    我有一个部署在 Windows Server 2008 中的工作跟踪器 WPF 应用程序 该跟踪器应用程序正在通过 WCF 服务与 Tracker windows 服务进行通信 用户可以从 Worker Tracker GUI 应用程序创建
  • 如何使 css a:active 在点击后起作用?

    我正在尝试使菜单用作选项卡 选项卡本身工作正常 菜单链接也很棒 但我想删除活动选项卡的底部边框 使其看起来像在实际页面上 我尝试过使用 id a active但似乎只有当我按下链接时它才起作用 我也想过用 javascript 来做这件事
  • 在Python中获取Decimal的Ceil()?

    有没有办法在Python中获得高精度Decimal的ceil gt gt gt import decimal gt gt gt decimal Decimal 800000000000000000001 100000000000000000
  • 通过 NDK 在 Android 中使用 C 库

    我想做的事 我找到了一个计算音频流音高的 C 库 http www schmittmachine com dywapitchtrack html并想在 Android 中使用它 我想除了移植它之外 我还可以在 NDK 的帮助下使用它 对吧
  • 如何从正则表达式创建随机字符串

    我想从正则表达式生成一个随机字符串 example random string 0 9 4 gt 7895 random string 0 9 4 gt 0804 random string 0 9 A Z 4 gt 9ZE5 random
  • 如何在lucene中使用tf idf相似度对文档进行排名

    在创建索引和搜索查询的基本代码中 我想使用 TFIDFsimilarity 对检索到的文档进行排名 但我收到错误 无法实例化类型 TFIDFSimilarity 我的代码如下 public class TFIDF T private sta
  • 在 WooCommerce 中对特定类别的最便宜商品进行折扣

    我喜欢根据产品类别打折 Woocommerce 中最便宜的购物车商品 基于 Woocommerce 中成本较低的产品的购物车折扣 https stackoverflow com questions 49693564 cart discoun