根据用户角色将收件人添加到失败和取消的 WooCommerce 电子邮件

2023-12-14

我希望能够根据用户在订购时的角色来更改接收 Woocommerce 电子邮件通知的人员。

例如,如果用户以批发客户身份登录,则会收到不同的电子邮件通知。

我找到了如何在新订单完成后使用以下命令更改它woocommerce_email_recipient_new_order挂钩,但我找不到与失败或取消的通知相关的任何挂钩。

add_filter( 'woocommerce_email_recipient_new_order', 'sv_conditional_email_recipient', 10, 2 );


function sv_conditional_email_recipient( $recipient, $order ) {

    // Bail on WC settings pages since the order object isn't yet set yet
    // Not sure why this is even a thing, but shikata ga nai
    $page = $_GET['page'] = isset( $_GET['page'] ) ? $_GET['page'] : '';
    if ( 'wc-settings' === $page ) {
        return $recipient; 
    }

    // just in case
    if ( ! $order instanceof WC_Order ) {
        return $recipient; 
    }


         if ( in_array( 'wholesale_customer', (array) $user->roles )  ) {
            $recipient .= ', [email protected]';
            return $recipient;
        }

    return $recipient;
}


add_filter( 'woocommerce_email_recipient_new_order', 'sv_conditional_email_recipient', 10, 2 );

有人可以帮忙吗?


您已经使用的钩子是复合钩子:woocommerce_email_recipient_{$this->id}, where {$this->id} is the WC_Email我想要new_order。因此,您可以设置任何电子邮件 ID,以使其适用于所需的电子邮件通知。

下面您有“新订单”、“取消订单”和“失败订单”的 3 个挂钩,您可以将它们用于相同的挂钩函数。

在您的函数中,我删除了一些不必要的代码并完成了获取客户数据的代码(用户角色)与订单相关:

add_filter( 'woocommerce_email_recipient_new_order', 'user_role_conditional_email_recipient', 10, 2 );
add_filter( 'woocommerce_email_recipient_cancelled_order', 'user_role_conditional_email_recipient', 10, 2 );
add_filter( 'woocommerce_email_recipient_failed_order', 'user_role_conditional_email_recipient', 10, 2 );
function user_role_conditional_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;

    // Get the customer ID
    $user_id = $order->get_user_id();

    // Get the user data
    $user_data = get_userdata( $user_id );

    // Adding an additional recipient for a custom user role
    if ( in_array( 'wholesale_customer', $user_data->roles )  )
        $recipient .= ', [email protected]';

    return $recipient;
}

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

经过测试并有效。

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

根据用户角色将收件人添加到失败和取消的 WooCommerce 电子邮件 的相关文章

  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • 用于验证 ip 列表中的 ip 范围的正则表达式

    我有正则表达式用于验证 50 个 ips 逗号分隔的列表 25 0 5 2 0 4 0 9 01 0 9 0 9 3 25 0 5 2 0 4 0 9 01 0 9 0 9 1 50 列表示例 10 10 10 1 127 0 0 1 现在
  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • 显示 woocommerce 中每位作者的总销售额

    我在一个网站上使用 wordpress 和 woocommerce 让用户创建帐户 以便他们可以上传自己的服装设计 然后我销售这些产品 并且对于其设计的每次销售 特定用户都会获得销售分成 我试图显示我网站上每个用户的销售数量 但不知道如何操
  • PHP-将字符串转换为unicode

    我在做这个工作 source mb convert encoding test unicode utf 8 source unpack C source var dump source return array size 8 1 gt in
  • 将变量设置为函数调用以在 PHP 中的 if 语句中使用

    好的 我正在做一些 Wordpress 编辑 并且编写了一个 if 语句 正如您所看到的 这使用函数调用作为变量 这是因为函数调用会调用当前页面的名称 这很好 然而 当我这样做时 它也往往会与页面上的标题相呼应 这是有道理的 我可能正在尝试
  • mongodb从不同数据库中选择

    我有大约 200 个 mongodb 数据库 每个数据库都有一个名为 Group 的集合 在该集合中有一个名为 meldingId 的字段 是否可以进行一个 mongodb 查询来查找不同数据库中的所有值 我设法通过 selectDB da
  • yii2 无线电内联 Html 帮助器

    我在 yii2 中有这个 radioList Html radioList abc null new class gt form control input sm 它生成这个 div class radio 但我想要 div class r
  • PHP—array_merge_recursive() - 相同键没有数组

    php a php gt data1 tag gt div classes gt 1 2 3 php gt data2 tag gt section classes gt 2 3 4 5 6 php gt result array merg
  • 支持通过 OAuth 进行 Facebook/Twitter 身份验证的 CAS 服务器

    我正在寻找一个支持 Facebook Twitter 通过 OAuth 进行单点登录身份验证的 CAS 服务器 我检查过 JASIG CAS 服务器 但它看起来不支持它们 我的 java web 应用程序基于 Spring Security
  • Jquery UI 日期选择器 设置默认日期

    我使用 jQuery UI 作为日期选择器 我想在字段中显示当前日期作为默认值 以下是我的代码 请帮助 From Date
  • 在 WooCommerce 管理订单项目上显示产品自定义字段(也适用于可变产品)

    基于在 WooCommerce 的订单编辑页面上显示自定义字段 https stackoverflow com questions 56259910 show custom fields on the order editing page
  • PhpPresentation imagecreatefromstring():数据不是可识别的格式 - PHP7.2

    我正在尝试使用 PhpPresentation 来阅读sample pptx使用文档中为读者提供的简单说明进行文件处理 我得到 imagecreatefromstring Data is not in a recognized format
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • NetBeans 代码模板 ${date}?

    我在 Eclipse 中有这个代码模板 自 日期 起 当输入时我得到这样的东西 自2009年8月4日起 但是当我添加相同的模板时 自 日期 起 到 NetBeans 它输出 自日期以来 有人可以帮忙吗 还没有答案吗 这在 Netbeans
  • array_merge 更改键

    我得到以下数组 arr array 6 gt Somedata 7 gt Somedata1 8 gt Somedata2 问题是 当我使用array merge array Select the data arr 它确实将数组键更改为 A
  • 通过 jQuery 从输入类型=“文件”多个中删除文件

    我在使用 PHP 和 jQuery 上传文件时遇到问题 表单可以一次上传多个图像 这些图像可以在滑块中预览 表单还包含两个字段标题和描述 滑块通过 jQuery 工作 当用户通过单击选择文件来选择多个图像时
  • 纠正装饰器模式的一个大缺点

    不久前 我在重构一些游戏战斗代码时决定尝试装饰器模式 战斗者可以拥有各种被动能力 也可能是不同类型的生物 我认为装饰器可以让我在运行时以各种组合添加行为 因此我不需要数百个子类 我几乎已经完成了 15 个左右的被动能力装饰器 在测试中我发现
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE

随机推荐

  • BigQuery 使用 PHP 流式传输“insertAll”性能

    我们使用以下方法将大量数据从服务器端流式传输到 BigQuery 中 google api php 客户端图书馆 除了性能之外 流媒体工作正常 我们的负载测试显示 将一行流式传输到 BigQuery 的平均时间为 1000 毫秒 1 秒 我
  • 无法向某些控件发送 WM_INPUTLANGCHANGEREQUEST

    我正在研究 又一个 键盘布局切换器并在 Skype 窗口 win7 x64 上的版本 6 22 中遇到了奇怪的问题 任意组合GetForegroundWindow GetFocus GetParentWindow 无法成功更改布局仅在消息输
  • 将 Double 值格式化为小数点后两位的最佳方法[重复]

    这个问题在这里已经有答案了 我在应用程序中处理大量双精度值 有没有简单的方法来处理 Java 中十进制值的格式 还有比这更好的方法吗 DecimalFormat df new DecimalFormat 我想做的基本上是格式化双值 例如 2
  • 为什么 numpy.mean 不是多线程的?

    自从我注意到 numpy 它只使用一个核心以来 我一直在寻找轻松地对一些简单分析代码进行多线程处理的方法 尽管事实上它应该是多线程的 我知道 numpy 是为多个核心配置的 因为我可以看到使用 numpy dot 的测试使用了我的所有核心
  • CoreData、多对多关系和 NSPredicate

    我有一个包含多对多关系的 CoreData 数据模型 事实证明 NSPredicate 不支持多对多关系 来自 CoreData pdf 谓词的键路径中只能有一个对多元素 作为食谱示例 许多食谱和许多成分 一份食谱可以有多种成分 其中 盐
  • 为什么 pytesseract 无法识别这个简单图像中的数字?

    我正在尝试使用 pytesseract 识别图像中的两个数字 我努力了 psm 6 up to 10 我努力了 c tessedit char whitelist 0123456789 以上均不返回49数字 我得到的最近的已返回4没有9 您
  • *通过共享* JavaScript 对象来测试深度相等

    在 JavaScript 中测试两个对象的深度相等这一主题已经有很多墨水了 然而 似乎没有人关心区分以下两个对象 var o1 var subitem var o2 subitem subitem var o3 大多数深度相等算法会说o1
  • 解析嵌入的CSS beautifulsoup

    是否可以从 html 标签中提取嵌入的 css 属性 例如 假设我想找出 s5 的垂直对齐属性是什么 我目前正在使用 beautifulsoup 并已检索了跨度标签tag soup find class s5 我试过了tag attrs c
  • 仅在第一次调用方法时调用该方法的块

    我有一个方法 在这个方法中我有一个块 public void method block instructions 但这个方法在我的程序中被调用了两次 我希望该块仅执行一次 并且仅在该方法第一次出现时执行 最好 最优雅的方式是什么 priva
  • NHibernate 和版本控制(时间戳)

    我得到了这个异常 在 System Convert ToDateTime 对象值 在 p nhibernate core src NHibernate Type DateTimeType cs 中的 NHibernate Type Date
  • 使用 mybatis 或 ibatis 的一对多关系

    我有一个有两个表的数据库 post id post name post desc files file id file name post attachments post id file id 在我的 xml 映射中我已经有了
  • 为什么此插件代码中的 CRM 2011 实体关系为空?

    这是我为 CRM 2011 编写的插件的工作示例 我已在插件注册工具中为此插件创建了 创建 步骤 这执行得很好 我还为该插件注册了一个 更新 步骤 由于返回的主要联系人为空 因此执行失败 这些步骤都注册为异步 using System us
  • 即使将鼠标悬停后也保持下拉菜单处于活动状态(可见)

    当我移动鼠标指针滚动到子菜单后 我的子菜单立即消失 感觉好像我把 CSS 搞砸了 经过几次尝试使其保持活跃后我无法弄清楚 我遵循了一些教程 看看它 他们称之为hover on the ul代替a 主播 我尝试了类似的方法 但无法达到我想要的
  • 从表列中的 SQL Server 日期值获取月份名称

    我想创建一个统计查询 显示每月的记录数 问题是我希望以字母形式显示月份 例如一月 二月 三月等 而不是像 1 2 或 3 那样 我没有使用字母表显示月份名称month getdate 我不知道如何进行转换 这是我的 SQL Server 查
  • TIMESTAMP 未按照蜂巢中镶木地板的预期表现

    I have parquet读取时的数据 TIMESTAMP列 使用 Spark 效果非常好 以下是样本记录 scala gt data select BATCH LOAD DATE limit 5 show BATCH LOAD DATE
  • JavaScript 的本地存储字符串存储在哪里?

    哪里localstorage字符串存储在操作系统上 它在 Firefox 的 Profile 文件夹中吗 是的 在 Firefox 中 它位于配置文件文件夹中的 webappsstore sqlite 文件中 See https devel
  • 将 one-hot 编码目标值映射到正确的标签名称

    我有一个标签名称列表 我枚举并创建了一个字典 my list b airplane b automobile b bird b cat b deer b dog b frog b horse b ship b truck label dic
  • python按钮点击后更改文本

    我想制作一个按钮 在每次单击后更改显示的文本 数字 并返回函数中定义的值 因为我想使用显示的变量 我创建了一个函数 每次点击后都会为 文本 添加 1 直到 4 和一个按钮 该代码不返回函数的值 按钮只有文本 1 2 3 或 4 import
  • 如何将 dateutil.relativedelta 对象转换为 datetime.timedelta 对象?

    如何将 dateutil relativedelta 对象转换为 datetime timedelta 对象 e g pip install python dateutil from dateutil relativedelta impor
  • 根据用户角色将收件人添加到失败和取消的 WooCommerce 电子邮件

    我希望能够根据用户在订购时的角色来更改接收 Woocommerce 电子邮件通知的人员 例如 如果用户以批发客户身份登录 则会收到不同的电子邮件通知 我找到了如何在新订单完成后使用以下命令更改它woocommerce email recip