根据 Woocommerce 中的每日时间范围对特定产品进行折扣

2024-01-02

在我的 WooCommerce 网站上,我正在尝试举办“特别午餐”每日活动。这意味着,从 11:00 到 15:00,特定产品将因“午餐特惠”每日活动而打折。

我希望这个“特别午餐”活动能够在一周的每一天重复发生。

如何才能实现这一目标?

我在网上搜索过这个,我只找到了可以限制每天物品的插件,而不是在特定时间段内。

任何帮助表示赞赏。


下方二维码可享价格折扣(启用根据正常价格计算的销售价格)每天 11:00 到 15:00 之间针对选定的产品 ID。

您必须设置:

  • 正确的时区(找到你的in here http://php.net/manual/en/timezones.php)
  • 适用的折扣率
  • 每天的开始和结束时间
  • 期间每日打折的相关产品 ID 数组

代码:

// Utility function that gives the discount daily period and the discount rate
function get_discount_period_rate(){
    // Set the correct time zone  (http://php.net/manual/en/timezones.php)
    date_default_timezone_set('Europe/Paris');

    // Set the discount rate
    $rate = 0.8; // <== 20 %

    // Set the start time and the end time
    $start_time = mktime( 11, 00, 00, date("m")  , date("d"), date("Y") );
    $end_time   = mktime( 15, 00, 00, date("m")  , date("d"), date("Y") );
    $time_now   = strtotime("now");

    // Return the rate during allowed discount the period or false outside the period
    return $start_time <= $time_now && $end_time > $time_now ? $rate : false;
}

// Enable calculated on sale price from the regular price and the rate
add_filter( 'woocommerce_product_variation_get_sale_price', 'periodic_discount_prices', 99, 3 );
add_filter( 'woocommerce_product_variation_get_price', 'periodic_discount_prices', 99, 3 );
add_filter( 'woocommerce_variation_prices_sale_price', 'periodic_discount_prices', 99, 3 );
add_filter( 'woocommerce_variation_prices_price', 'periodic_discount_prices', 99, 3 );
add_filter( 'woocommerce_product_get_sale_price', 'periodic_discount_prices', 99, 3 );
add_filter( 'woocommerce_product_get_price', 'periodic_discount_prices', 99, 3 );
function periodic_discount_prices( $price, $product, $parent = 0 ){
    // Set the product Ids that will be discounted
    $discounted_products = array( 37, 41, 53 );

    if( get_discount_period_rate() && in_array( $product->get_id(), $discounted_products ) ){
        $price = $product->get_regular_price() * get_discount_period_rate();
    }
    return $price;
}

// Handling variation prices caching
add_filter( 'woocommerce_get_variation_prices_hash', 'add_rate_to_variation_prices_hash', 99, 1 );
function add_rate_to_variation_prices_hash( $hash ) {
    if( get_discount_period_rate() )
        $hash[] = get_discount_period_rate();
    return $hash;
}

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。

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

根据 Woocommerce 中的每日时间范围对特定产品进行折扣 的相关文章

  • PHP cURL 重定向到本地主机

    我正在尝试使用带有 cURL 的 php 脚本登录外部网页 我是 cURL 的新手 所以我觉得我错过了很多东西 我找到了几个例子并修改了它们以允许访问https页面 最终 我的目标是能够登录页面并在登录后通过指定的链接下载 csv 到目前为
  • XP及PHP MYSQL 练级系统

    我已经查看了所有提出的问题和答案 但我似乎找不到最适合我的答案 我想做的是开发一个系统 当用户达到一定的 XP 限制时 系统会进入下一个级别 它显示了下一个 XP 之前需要多少 XP So lvl1 0 gt lvl2 256 gt lvl
  • 如何在 Laravel 5 中对合并集合进行分页?

    我正在创建一个包含两种类型的对象的流 BluePerson 和 RedPerson 为了创建流 我获取所有这两个对象 然后将它们合并到一个集合中 这样做之后 我需要对它们进行分页 但是分页似乎是针对雄辩的模型和数据库查询 而不是集合 我见过
  • Zend 如何使用 mod_rewrite 解析前端控制器中的 URL?

    我不明白 Zend Framework 如何控制路由 我实际上正在尝试创建自己的控制器 路由类 编写了与 Zend 建议的 htaccess 相同的代码 以重写位于网站根目录的index php RewriteEngine On Rewri
  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • TCPDF / FPDI 可以接受 PDF 作为字符串吗?

    是否可以将 TCPDF 或 FPDI PDF 作为字符串提供 我有一个传入的 PDF 数组作为字符串 但无法写入磁盘 我在文档中找不到与此相关的任何内容 如果没有 是否有一种有效的方法来从内存或作为对象存储 读取这些 PDF 将它们喂给 F
  • 从目录中读取所有文件内容 - php

    这实际上是一个简单的任务 我想显示指定文件夹中所有文件的内容 我正在传递目录名称 echo a href row qname a 在第二页上 我正在迭代目录内容 while entryname readdir myDirectory if
  • 如何使用 RewriteRule 来为 PHP 修改 $_SERVER['REQUEST_URI'] ?

    有了这个 htaccess RewriteEngine On RewriteRule foo foo 1 here I tried L PT C etc RewriteRule index php L 我已经尝试了第一个 RewriteRu
  • PHP:如何发送电子邮件基础知识

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

    我需要以某种不同的方式合并一些数组 我使用 array merge recursive 然而 有一些事情我需要改变 但我不知道如何改变 这是来自 php net 的引用 但是 如果数组具有相同的数字键 则后面的值 不会覆盖原始值 但会追加
  • 如何在 PHP 中运行 shell 脚本?

    我正在尝试使用 PHP 触发 shell 脚本的运行 本质上 当用户在我们用 PHP 编写的网站上完成一个操作时 我们希望触发一个 shell 脚本 该脚本本身调用一个 Java 文件 提前致谢 See shell exec http ph
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • 用PHP动态生成二维码[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的网站上生成二维码 他们所要做的就是在其中包含一个 URL 我网站上的变量将提供该 URL
  • filter_input() 何时删除 POST 变量的斜杠?

    我创建了一个小型 PHP 脚本 它在 PHP 5 2 17 的服务器上运行magic quotes gpc指令已启用 我没有对 php ini 文件的写访问权限 并且我想从用户输入中删除所有斜杠 即使magic quotes gpc指令被关
  • 无法显示由 Fine-uploader 上传到 Amazon s3 的图像

    我现在尝试设置fineuploader s3以显示在aws服务器上成功上传的文件的图像 如示例页面上所做的那样 http fineuploader com s3 demo http fineuploader com s3 demo 我 仍然
  • 如何在 WordPress/WooCommerce 3+ 中向评论表单添加自定义字段

    我正在尝试在产品评论中添加 电话 字段 WooCommerce 3 针对未注册用户 来宾 电话号码只能由管理员在管理面板中看到 电话字段需要填写 Required 我尝试了这段代码 但这不起作用 function true phone nu
  • MySQL 中布尔值的 TINYINT 与 ENUM(0, 1)

    MyISAM 表和 MySQL 5 1 中具有 0 和 1 值的 Tinyint 或 ENUM 0 1 哪个更好 您可以使用BIT 1 如中提到的MySQL 5 1 参考 http dev mysql com doc refman 5 1
  • SVG 转 JPG / PNG

    有没有工作模块可以convert a SVG image into像素格式如JPEG or PNG 看看蜡染工具包 具体来说是光栅化器 http xmlgraphics apache org batik tools rasterizer h
  • 除括号之间的内容外,所有内容均小写

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

随机推荐

  • Expressjs:搜索查询 api

    我想使用查询字符串搜索我的用户存储库 这应该返回具有相似用户名 kyogron 和相似电子邮件 kyogron gmail 的所有用户 GET localhost 3000 users username kyogron email prot
  • 运行异步代码的 Windows 服务不等待工作完成

    In Brief 我有一个 Windows 服务 它可以并行执行多个作业作为异步任务 然而 当 OnStop 被调用时 似乎这些都被立即终止 而不是被允许以更优雅的方式停止 更详细 每个作业都代表工作的迭代 因此完成工作后 该作业需要再次运
  • 无法安装分发配置文件

    我想向 AppStore 提交一个应用程序 我的第一个应用程序 我已经在我的设备中测试了该应用程序 因此我已经有了开发配置文件 但我无法在 Xcode 中安装分发配置文件 我已按照该过程操作 我不知道多少次 但是当我尝试通过管理器添加配置文
  • 如何避免 Struts2 验证

    我有一个index jsp我从中调用一个动作类TestAction 单击超链接 其中有方法 显示 从数据库加载组合框的值以及执行方法 以显示在页面上test jsp On test jsp 我有一些输入字段和组合框 单击 test jsp
  • PHP 中单引号和双引号字符串有什么区别?

    我有点困惑为什么我在 PHP 中看到一些代码 其中的字符串放在单引号中 有时放在双引号中 我只知道在 NET或者C语言中 如果它是在单引号中 那就意味着它是一个字符 而不是一个字符串 Answer recommended by PHP co
  • 如何查明“svn up”是否成功完成?

    I run sudo svn username radek update codebase force 每天晚上在自动化测试开始之前从我的 php 脚本 在 SuSE 上 获取 因此 测试是在今天签入的最新代码上完成的 我怎么能确定知道sv
  • Gradle 无法解决 Android Studio 中的依赖关系

    我在 Android Studio 中导入了一个 Phonegap 项目 并将其设为基于 Gradle 的项目 现在我正在尝试编译一些外部依赖项 但出现此错误 错误 72 13 无法解析 com loopj android android
  • 类型“typeof“http””上不存在属性“服务器”

    我知道var someModule require someModule 一般被替换为import as someModule from someModule 但我不知道如何使用 Typescript ES6 语法来表达以下 Node js
  • 在 C# 中重置 IronScheme 引擎

    有没有办法 重置 IronScheme 引擎 我的本质目标是确保对 string Eval 的连续调用是独立执行的 例如 我想被执行 define x 1 0 x 5 0 Eval 然后重置并通话 x 3 0 Eval 失败就像它自己执行一
  • 使用 IE 11 的 Angular 4 应用程序“无法从释放的脚本执行代码”

    我有一个 Angular 应用程序 我认为它是版本 4 IE 11 在此应用程序中的登录序列期间崩溃 无法从释放的脚本执行代码 根据 IE 控制台 错误发生在 polyfills 包的第 10939 行 var testString del
  • C++ 中结构的奇怪行为 [第 1 部分]

    考虑 struct box int array 3 int main box a 1 如果上面的代码在 C 中有效 那么为什么下面的代码不起作用 struct box int simple int int main box b 2 是什么原
  • Android构建工具1.1.0,单元测试文件夹?

    我最近在我的 android 项目中安装了来自 google 的最新工具 buildscript repositories jcenter mavenCentral dependencies classpath com android to
  • 是什么触发为 AWS Lambda 访问 VPC 资源创建 ENI

    我们部署了多个 lambda 可以使用以下方式访问我们的 VPC VpcConfig环境 据我了解 AWS Lambda 通常会按需创建 lambda 但如果您将它们连接到您的 VPC 那么 AWS 将 在某些时候 在指定的子网之一上创建
  • 在 Windows 10 中使用 WPF 对大写单词进行拼写检查

    我有一个 WPF 应用程序 其中有一些文本框CharacterCasing CharacterCasing Upper也SpellCheck IsEnabled true 在 Windows 7 中 这工作正常 但在 Windows 10
  • Rails 中的业务逻辑在哪里?

    我是一名 ASP NET MVC 开发人员 刚刚开始我的第一个 Rails 大型项目 但是我很困惑将业务逻辑放在哪里 在 ASP NET 上 我创建了一个包含处理业务逻辑的服务 域驱动设计 的库 我听说 Rails 使用胖模型瘦控制器的概念
  • NestJS:每个模块导入 HttpModule 的新实例

    我的nestjs系统是一个通过API调用连接多个系统的系统 对于每个系统 我创建了一个模块来处理它们的进程 每个模块都导入HttpModule 我想为每个模块的 HttpModule 都有单独的 Axios 拦截器 这是我测试功能的尝试 o
  • Java 8 流条件处理

    我感兴趣的是将一个流分成两个或多个子流 并以不同的方式处理元素 例如 一个 大 文本文件可能包含 A 类型的行和 B 类型的行 在这种情况下我想要执行以下操作 File lines path filter line gt isTypeA l
  • 使用 mysql-proxy 操作登录信息

    是否可以在 mysql proxy 的 lua 脚本中拦截和更改登录信息 例如 如果用户像这样访问代理 mysql h localhost P 4040 u bob D orders p 我希望连接不仅重定向到后端服务器 而且还更改用户名
  • 如何将“2021-01-19T16:20:04+0000”解析为 time.Time

    我已经尝试过以下格式 应该可以捕获 0000我读到的时区偏移量https golang org pkg time pkg constants https golang org pkg time pkg constants ts err ti
  • 根据 Woocommerce 中的每日时间范围对特定产品进行折扣

    在我的 WooCommerce 网站上 我正在尝试举办 特别午餐 每日活动 这意味着 从 11 00 到 15 00 特定产品将因 午餐特惠 每日活动而打折 我希望这个 特别午餐 活动能够在一周的每一天重复发生 如何才能实现这一目标 我在网