有条件地针对特定产品 ID 和数量自动应用优惠券

2023-12-23

我正在尝试根据产品 ID 和数量条件在我的 WooCommerce 商店中自动应用优惠券。我的最终目标是当两 (2) 个所需产品添加到购物车时自动应用特定优惠券,并且每当将三 (3) 个所需产品添加到购物车时自动应用另一张优惠券。单一数量的产品不应有折扣。以下是代码的更正版本,现在可以使用:

add_action( 'woocommerce_before_cart', 'conditional_auto_add_coupons' );
function conditional_auto_add_coupons() {

if ( !WC()->cart->is_empty() ){

    // Define HERE your Targeted Product ID and coupons codes
    $target_pid = 103;
    $coupon1 = 'soccer-sibling-2';
    $coupon2 = 'soccer-sibling-3';

    // First cart loop: Counting number of subactegory items in cart
    foreach ( WC()->cart->get_cart() as $cart_item ){
        if( $target_pid == $cart_item['data']->id ){
            // Removes any coupons in the cart already
            WC()->cart->remove_coupons();
            if( 2 == WC()->cart->get_cart_contents_count() && !WC()->cart->has_discount( $coupon1 ) ){
                WC()->cart->remove_coupons();
                WC()->cart->add_discount( $coupon1 );
                wc_add_notice( __( 'The multiple sibling discount has been applied.', 'theme_domain' ), 'success' );
            } elseif( 3 == WC()->cart->get_cart_contents_count() && !WC()->cart->has_discount( $coupon2 ) ){
               WC()->cart->remove_coupons();
                WC()->cart->add_discount( $coupon2 );
                wc_add_notice( __( 'The multiple sibling discount has been applied.', 'theme_domain' ), 'success' );
            }
            // Recalculates Cart Totals to show correct price
            WC()->cart->calculate_totals();
        }
     }
  }
}

你的代码中有很多错误,而且也有点过时了......我已经重写了你函数中的所有内容并将其挂在另一个钩子中。

这是您重新访问的代码:

add_action( 'woocommerce_before_cart', 'conditional_auto_add_coupons' );
function conditional_auto_add_coupons() {

    if ( !WC()->cart->is_empty() ){

        // Define HERE your Targeted Product ID and coupons codes
        $target_pid = 103;
        $coupon1 = 'soccer-sibling-2';
        $coupon2 = 'soccer-sibling-3';

        // First cart loop: Counting number of subactegory items in cart
        foreach ( WC()->cart->get_cart() as $cart_item ){
            if( $target_pid == $cart_item['data']->id ){
                if( 2 == WC()->cart->get_cart_contents_count() && !WC()->cart->has_discount( $coupon1 ) ){
                    WC()->cart->add_discount( $coupon1 );
                    wc_add_notice( __( 'A quantity discount of <strong>5%</strong> has been added.', 'theme_domain' ), 'success' );
                } elseif( 3 == WC()->cart->get_cart_contents_count() && !WC()->cart->has_discount( $coupon2 ) ){
                    WC()->cart->add_discount( $coupon2 );
                    wc_add_notice( __( 'A quantity discount of <strong>10%</strong> has been added.', 'theme_domain' ), 'success' );
                }
            }
        }
    }
}

此代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。

这应该可行,并且不会使您的网站崩溃,但我还没有真正测试它,因为这是非常特殊的。

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

有条件地针对特定产品 ID 和数量自动应用优惠券 的相关文章

  • 如何在 Laravel 5 中对合并集合进行分页?

    我正在创建一个包含两种类型的对象的流 BluePerson 和 RedPerson 为了创建流 我获取所有这两个对象 然后将它们合并到一个集合中 这样做之后 我需要对它们进行分页 但是分页似乎是针对雄辩的模型和数据库查询 而不是集合 我见过
  • WordPress 安装中发现的恶意 PHP 代码有什么作用?

    我能够解码在一些 WordPress 文件中找到的以下 PHP 脚本 只是出于好奇 有人可以告诉我这段代码实际上是做什么的吗 看起来它已经以某种方式复制到同一服务器上的其他 WordPress 安装中
  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • 在 php 和 mysql 中使用 utf8mb4

    我读过 mysql gt 5 5 3 完全支持每个可能的字符 如果您使用编码utf8mb4对于某个表 列http mathiasbynens be notes mysql utf8mb4 http mathiasbynens be note
  • PHP:如何发送电子邮件基础知识

    我想使用 PHP 从本地主机向其他人发送电子邮件 我需要做什么才能做到这一点 例如我需要安装邮件服务器吗 如果我没记错的话 有一种语言不需要邮件服务器来发送电子邮件 这样对吗 PHP ini里面有 邮件功能 如何配置这个 我在网上查了一下
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 正确的标头 php mysql blob 显示图像

    我正在尝试在我的 PHP 页面中显示来自 mysql blob 的图像 我知道这不是最佳实践 然后我会将其引入我的 iOS 应用程序中 我在设置页面标题时遇到问题 我认为需要将其设置为图像 所以 这显示了图像 但我不相信页眉是正确的 hea
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • PHP 和 MySQL 的重音字符错误

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • 新的 Wp_Query() 或 pre_get_posts() 来查看自定义帖子类型的所有帖子?

    我有一个存档模板文件 显示自定义帖子类型人员的所有帖子 称为 archive personnel php 这是文件的开头
  • 如何使用php在mysql数据库中添加照片? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我对 PH
  • 我的CSS出了什么问题?活动链接不改变颜色

    我无法让我的 WordPress 菜单活动链接保持红色 我添加了我认为与导航相关的 CSS 还有正文等 以防影响问题 感谢您的帮助 body font family Helvetica Neue sans serif font size 1
  • 使用 IntlDateFormatter 转换非公历日期

    我应该如何使用将非公历日期转换为其他日历类型IntlDateFormatter 我要转换 1392 01 02 from persian to islamic日历 我尝试了以下代码 但它没有转换日历 formatter IntlDateFo
  • PHP函数返回值到html标签

    我想获取函数的返回值并将其显示到特定的id 在我的 Class php 中 我有一个名为 login 的函数 用于验证密码是否正确 不正确
  • 在 PHP 中使用数组来比较用户名/密码

    我有以下 php 脚本 其中有一个用户名和密码 Username user1 Password pass1 if isset POST submitform Clean up the input values foreach POST as
  • 如何检查一个值是否已经存在以避免重复?

    我有一个 URL 表 但我不想要任何重复的 URL 如何使用 PHP MySQL 检查给定 URL 是否已在表中 如果您不想重复 可以执行以下操作 添加唯一性约束 use REPLACE http dev mysql com doc ref
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • 连接 3 三张表

    我有这个图表应该可以解释我的情况 我需要一些关于连接 3 个表的帮助 我不知道如何做这种事情 因此 我可以通过执行以下操作来经历一段检索记录的 while 循环 img src alt Album AlbumID 使用内部联接 http w
  • 通过复选框选择多行时出错错误未定义索引:复选框

    我想从中选择多行checkbox并想通过单击按钮立即更新它们 我尝试了多种方法 但不起作用 你能帮忙吗 它显示错误为Undefined index checkbox td td
  • 表单提交后显示 $_FILES['image']

    提交表单后如何显示上传的图片 提交表单后 它将是一个预览页面 因此我不会在 MySQLet 中存储图像类型 BLOB 如何显示 FILES image

随机推荐

  • dplyr / R 重置累加和

    如果 当前 总和超过某个阈值 我想使用 dplyr 生成带有重置的累积总和 在下面 我想对 a 进行求和 library dplyr library tibble tib lt tibble t c 1 2 3 4 5 6 a c 2 3
  • 尝试根据一列中的值屏蔽 2D numpy 数组

    我有以下数组 6 105 2 8 09841881 6 105 4 9 34220351 6 105 6 9 97663435 6 1001 2 9 57108242 6 1001 4 12 22355794 6 1001 6
  • 如何使 lxml 的 iterparse 忽略无效的 XML 字符?

    我的 XML 包含无效字符 LXML 的 XMLParser 对这些无效字符引发异常 但是当我使用以下命令创建 XMLParser 时恢复 真选项 它会忽略坏字符并且工作正常 我的问题是如何为 lxml 的 iterparse 函数设置类似
  • 使用 PDFKit 和 wkhtmotopdf PDF 生成挂起

    我在 OSX Lion 上使用自制软件 0 9 9 附带的 wkhtmtopdf 突然间我无法再生成 PDF 当我在 URL 末尾添加 pdf 时 wkhtmltopdf 进程会启动 但该进程永远不会完成 我怀疑这是 wkhtmltopdf
  • Angular 默认应用程序服务:Chrome 中的隐私错误:NET::ERR_CERT_AUTHORITY_INVALID

    我正在尝试遵循本指南https angular io guide setup local https angular io guide setup local 我安装了 Node js 和 Angular cli 并构建了默认应用程序 ng
  • Winforms 透明度问题(我对此感到疯狂)

    我将向您展示下面的图片 但在此之前 如果您见过雅虎小部件或卡通 主题 Windows 媒体播放器皮肤 我正在构建一个更少的标题栏 更少的背景 应用程序 它看起来像这样 source deviantart net http fc05 devi
  • 复制粘贴的图像存储在 Jupyter Notebook 中的哪里?

    这非常类似于这个问题 https stackoverflow com questions 67598559 local images in jupyter notebook但尚未得到答复 我从 PyCharm 启动了 Jupyter 服务器
  • C# WPF 在AllowTransparency="true" 的窗口上显示WebBrowser 不显示

    我正在显示一个带有 WebBrowser 控件的窗口 我希望窗户是无框的 所以我设置了 WindowStyle None 这有效 但在窗口周围显示彩色边框 Allowstransparency true 删除此设置 但不再显示 Web 浏览
  • 我想保护我的 flash 文件“swf”不被使用 C# 复制 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想保护我的闪存文件 swf 不被使用 C 复制 你可以帮帮我吗 Regards 使用流托管向播放器提供数据以打开您的文件 您还需要相应地调
  • 如何将 Unity.RegisterType 与 Moq 一起使用?

    我有一个统一的运行代码 现在我想使用 Moq 为 ASP MVC 进行单元测试 在 global asax 的代码中 我有以下内容 IUnityContainer container new UnityContainer container
  • C# 扩展方法 - 多远才算太远?

    Rails 为 Ruby 引入了一些核心扩展 例如3 days from now它会返回 正如您期望的三天后的日期一样 使用 C 中的扩展方法 我们现在可以执行类似的操作 static class Extensions public sta
  • 是否应该在 Rails 中测试本机验证?

    大家都知道自动化测试是一件好事 并不是每个人都确切地知道要测试什么 我的问题是是否应该在应用程序中测试 validate presence of validate uniqueness of 等本机验证 在我的办公室里 我们三个人 一个认为
  • gearman 中的错误情况和重试?

    有人可以指导我 gearman 在出现异常时如何重试吗 抛出或发生错误时 我在 Django 应用程序中使用 python gearman 客户端 我的工作人员是 作为 Django 命令启动 我从中读到博客文章 http www herm
  • AT命令C++代码的输出

    我编写了以下代码 该代码使用 GSM SM5100B 向我的手机发送一条简单的消息 但这不起作用 我想用 C 代码检查每个 printf 行的输出 例如 AT CMFG 1 ok AT CMGS 69 ok ETC 有什么理由要实施这个吗
  • 如何以编程方式将 2 个或更多 .WAV 文件连接在一起?

    我需要能够将 2 个或多个 wav 文件合并为一个 wav 文件 我必须使用 C 以编程方式执行此操作 不能选择第 3 方产品 我知道 System Media SoundPlayer 类 但我不想播放 wav 而只是创建它 这是使用构建的
  • powershell 扩展对象

    如何在 PowerShell 中向对象添加列 例如 Get Childitem 返回一个对象 其中包含模式 LastWriteTime 长度名称等 我想用一个额外的列来扩展这个对象 该列是根据 LastWriteTime 计算出来的 这是原
  • 如何在android中调试kivy应用程序?

    我正在 Android 中开发一个 kivy 应用程序 编译并运行应用程序后 如果有 崩溃或某种错误 我如何找到具体的错误 听说有一个日志程序 您想要的工具称为 logcat 该文档是http developer android com t
  • 当给定区域性不知道格式时,Convert.ToDateTime() 如何解析给定字符串

    我有以下代码 并且它有效 string testDateStr 2009 7 28 05 23 15 DateTime testDateObj Convert ToDateTime testDateStr CultureInfo GetCu
  • R 中两个固定因子嵌套和交叉因子

    我想设计一个嵌套模型 有点难以解释 所以我画了一张图 所有因素都是固定的 每个因素都有 2 个水平 0 1 A 和 B 嵌套了 C 和 D 因子 E 和 F 与这些因素独立并且交叉 我想知道他们之间的互动 我知道我可以在 R 中针对一个嵌套
  • 有条件地针对特定产品 ID 和数量自动应用优惠券

    我正在尝试根据产品 ID 和数量条件在我的 WooCommerce 商店中自动应用优惠券 我的最终目标是当两 2 个所需产品添加到购物车时自动应用特定优惠券 并且每当将三 3 个所需产品添加到购物车时自动应用另一张优惠券 单一数量的产品不应