在 Woocommerce 中的特定电子邮件通知上添加特定产品的自定义文本

2023-12-26

我想仅针对 WordPress 中的 customer-completed-order.php 中的特定产品(产品 ID:1)添加额外的文本“此特定项目等有优惠”。其他产品不需要有这条额外的线。有人可以帮我找出这个吗?

 <?php
   /**
    * Customer completed order email
    *
    * This template can be overridden by copying it to yourtheme/woocommerce/emails/customer-completed-order.php.
    *
    * HOWEVER, on occasion WooCommerce will need to update template files and you
    * (the theme developer) will need to copy the new files to your theme to
    * maintain compatibility. We try to do this as little as possible, but it does
    * happen. When this occurs the version of the template file will be bumped and
    * the readme will list any important changes.
    *
    * @see https://docs.woocommerce.com/document/template-structure/
    * @package WooCommerce/Templates/Emails
    * @version 3.5.0
    */

   if ( ! defined( 'ABSPATH' ) ) {
    exit;
   }

   /*
    * @hooked WC_Emails::email_header() Output the email header
    */
   do_action( 'woocommerce_email_header', $email_heading, $email ); ?>
<?php /* translators: %s: Customer first name */ ?>
<p><?php printf( esc_html__( 'Hi %s,', 'woocommerce' ), esc_html( $order->get_billing_first_name() ) ); ?></p>
<?php /* translators: %s: Site title */ ?>
<p><?php printf( esc_html__( 'Your %s order has been marked complete on our side.', 'woocommerce' ), esc_html( wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ) ) ); ?></p>
<?php
   /*
    * @hooked WC_Emails::order_details() Shows the order details table.
    * @hooked WC_Structured_Data::generate_order_data() Generates structured data.
    * @hooked WC_Structured_Data::output_structured_data() Outputs structured data.
    * @since 2.5.0
    */
   do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );

   /*
    * @hooked WC_Emails::order_meta() Shows order meta data.
    */
   do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );

   /*
    * @hooked WC_Emails::customer_details() Shows customer details
    * @hooked WC_Emails::email_address() Shows email address
    */
   do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );

   ?>
<p>
   <?php esc_html_e( 'Thanks for shopping with us.', 'woocommerce' ); ?>
</p>
<?php
/*
* @hooked WC_Emails::email_footer() Output the email footer
*/
do_action( 'woocommerce_email_footer', $email );

以下内容将在客户已完成电子邮件通知中的特定产品的订单项目名称下显示自定义文本:

// Setting the email_is as a global variable
add_action('woocommerce_email_before_order_table', 'the_email_id_as_a_global', 1, 4);
function the_email_id_as_a_global($order, $sent_to_admin, $plain_text, $email ){
    $GLOBALS['email_id_str'] = $email->id;
}

// Displaying product description in new email notifications
add_action( 'woocommerce_order_item_meta_end', 'product_description_in_new_email_notification', 10, 3 );
function product_description_in_new_email_notification( $item_id, $item, $order = null ){
    // HERE define your targetted product ID
    $targeted_id = 37;

    // HERE define the text information to be displayed for the targeted product id
    $text_information = __("There is an offer in this particular item", "woocommerce");

    // Getting the email ID global variable
    $refNameGlobalsVar = $GLOBALS;
    $email_id = $refNameGlobalsVar['email_id_str'];

    // If empty email ID we exit
    if(empty($email_id)) return;

    // Only for "New Order email notification" for your targeted product ID
    if ( 'customer_completed_order' == $email_id &&
        in_array( $targeted_id, array( $item->get_product_id(), $item->get_variation_id() ) ) ) {

        // Display the text
        echo '<div class="product-text" style="margin-top:10px"><p>' . $text_information . '</p></div>';
    }
}

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

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

在 Woocommerce 中的特定电子邮件通知上添加特定产品的自定义文本 的相关文章

  • 在php中获取二进制数据大小的正确方法是什么?

    我已阅读文件的一部分 现在想确保该部分的大小正确 我怎样才能在 php 中做到这一点 part fread file 1024 return some function part 1024 我已经阅读了这些示例 但我怀疑是否要使用 strl
  • Chrome 不渲染
    标签,FF 渲染

    我有一个非常烦人的问题 我的网站有一个表单 可以在 Firefox 中运行 但不能在 IE 或 Chrome 中运行 它是用 WordPress 的 Gravity Forms 制作的 但这可能与该问题无关 因为另一个表单插件也出现了同样的
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • 为什么我应该使用 $_GET 和 $_POST 而不是 $_REQUEST? [复制]

    这个问题在这里已经有答案了 除此之外 REQUEST从 cookie 读取 有什么理由我应该使用 GET and POST代替 REQUEST 这样做的理论和实践理由是什么 当我只想让用户的某些数据返回某些数据时 我使用 REQUEST 当
  • Laravel 5 与 SAML 2 和现有 IDP 集成

    我使用 Laravel 5 我正在尝试将 SAML 2 0 与其集成 我找到了这个包 https github com aacotroneo laravel saml2 https github com aacotroneo laravel
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • 如何从字符串中只获取数字? [复制]

    这个问题在这里已经有答案了 我有这样的字符串 第 001 课 完成 在这种情况下 我只想获取数字部分001 我试过这个 str the title preg match all d str matches number implode ma
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • 如何将 ctype_alpha 与 UTF-8 结合使用

    如何将 ctype alpha 与 UTF 8 一起使用 我有这个代码 if empty POST false if isset POST first name empty POST first name if ctype alpha PO
  • PHP 中的正则表达式:找到第一个匹配的字符串

    我想在非常长的文本中找到第一个匹配的字符串 我知道我可以使用 preg grep 并获取返回数组的第一个元素 但是 如果我只需要第一场比赛 或者我知道提前只有一场比赛 那么这样做效率不高 有什么建议吗 预匹配 http www php ne
  • 需要 mysqli_fetch_all 的替代方案

    我有一个 php mysqli 代码 可以找到一个我的本地服务器 但是在我的服务器上使用它时 我得到了一个 Fatal error Call to undefined function mysqli fetch all in home3 t
  • 在 MySQL 中搜索多个单词

    我使用 HTML 表单来允许用户查找数据库表中的条目
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • WordPress 事件按元生效日期排序

    我在获取参数数组以按 Wordpress 中的日期对事件列表进行排序时遇到一些问题 我在 Stack Overflow 和其他地方找到了几个建议的解决方案 但经过大量的试验和错误后 这些解决方案似乎都不起作用 这没什么花哨的 而且应该比这容
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • PHP 除法浮点值问题

    当我尝试获取余数时 它给出了无效值 我试图获得两位小数的余数 我得到 3 4694469519536E 18 我的价值观是 x 0 1 y 0 005 我尝试了以下方法 echo ed fmod 0 1 0 005 OutPut 3 469
  • PHP 中的 Zip 流

    我有一个 PHP 脚本 可以动态创建 zip 文件并强制浏览器下载该 zip 文件 问题是 我可以直接将zip文件写入连接到用户浏览器的输出流 而不是先将其保存为服务器上的真实文件 然后发送文件吗 提前致谢 如果您的 Web 服务器运行的是

随机推荐

  • Node.js 缓存代理服务器

    我正在尝试使用node js 创建一个http 缓存代理服务器 我可以在其中转发到任何网页并将它们缓存在我的本地磁盘上 以下是我的第一次尝试代码 var http require http url require url sys requi
  • Galaxy Tab 在设备上调试?

    有人对 Galaxy Tab 进行过设备调试吗 我有一个普通的 Galaxy Tab 虽然 Eclpise 会让我在设备上 运行 我的应用程序 但如果我在 eclpise 中单击 调试 它不会执行任何操作 也不会尝试连接到调试器 Ideas
  • 使用 istio 作为外部 TLS 服务的反向代理

    Istio 允许您在 a 中路由 http 请求VirtualService到外部主机提供ServiceEntry存在 例如 apiVersion networking istio io v1alpha3 kind ServiceEntry
  • 未找到名称为“${body}= 创建词典”的关键字

    settings Library RequestsLibrary Library Collections Library OperatingSystem Library SeleniumLibrary Variables username
  • python numpy 成对编辑距离

    所以 我有一个 numpy 字符串数组 我想使用此函数计算每对元素之间的成对编辑距离 scipy spatial distance pdist 来自http docs scipy org doc scipy 0 13 0 reference
  • 如何将应用程序命令绑定到视图模型(WPF)?

    我已经阅读了 Josh Smith 的有关使用 RelayCommand 绑定命令以查看模型的文章 但是 我需要将 ApplicationCommands Save 绑定到视图模型 以便当用户单击保存菜单项时它会在窗口中处理 这怎么可能 我
  • 了解 iOS 应用程序中使用的 MVC 模式

    我读过Apple的MVCarticle https developer apple com library ios documentation Cocoa Conceptual CocoaFundamentals CocoaDesignPa
  • 复制到 d3dtexture 的 FreeType2 字符显示为双字母

    我最近刚刚开始使用 FreeType 库 并开始尝试从缓冲区复制到 directx9 纹理 然而 尽管我是从通过加载单个字符创建的缓冲区复制的 但目前还是出现了双字母 尝试复制字符 a 以下是我当前的代码 void TexFont free
  • 数据库存在,但返回错误“未知数据库”

    我安装了WAMP服务器几个小时前进入我的Windows 10 64 bit电脑 我用了phpmyadmin创建一个名为 的数据库testdb 并尝试使用 php 文件连接到它 我确信我创建了数据库 但它返回此错误 Warning mysql
  • Ionic 3 RSS 使用 rss2json“不可处理的实体”读取

    我在使用 Ionic 3 的 rrs2json API 将 RSS 转换为 JSON 时遇到问题 如果我执行代码 则会出现错误 gt Response body status error message rss url参数为必填项 Stat
  • 如何过滤相关对象中的字段?

    如果我尝试过滤相关对象中的字段 则 Tastypie 将返回错误 例如 运行 curl H Accept application json http localhost 8080 wordgame api v1 rounds format
  • Xcode:请求打开应用程序失败

    在一切正常并运行项目之前的某个时候 但现在我遇到的问题是request to open App failed 有谁有办法解决这个问题以及为什么会出现这个问题 Cause 可能您之前在假设 iphone 6s Plus 上运行过不同的项目 并
  • 通过[名称]引用类似定理的环境

    我正在使用 ntheorem 来排版一组条件 在我的序言中我有 theoremstyle empty newtheorem Condtion Condtion 当我想排版一个条件时 我写 begin Condtion name label
  • 如何在 Android 中单击按钮时清除活动堆栈

    我有一个问题 我的应用程序中有一个注销按钮 我们在该按钮上调用了应用程序登录屏幕 但此时当用户按下 Android 手机的后退按钮时 他在没有身份验证的情况下再次进入应用程序 这是不可取的 我希望当我们单击 注销 按钮时 所有以前的活动堆栈
  • iPhone SDK如何实现自动对焦拍照?

    我正在创建一个应用程序 用户可以在其中拍摄带有文本的图像并上传到服务器 我用过AVCaptureSession打开相机并放置一个捕获最新帧并将其上传到服务器的栏按钮 在此应用程序中 用户可以通过单击栏按钮将多张图像一张一张地发送到服务器 我
  • 如何使用 jsoup 替换标签

    我想将所有图像标签替换为div标签 我可以选择所有标签 并且我知道我必须使用replaceWith 但我无法使用它 如果我使用TextNode替换为 div div 它转换成 amp lt div amp gt my div amp lt
  • 运行 python 多进程进行图像处理

    我有一个 python 函数 它接受图像路径并输出 true 或 false 具体取决于图像是否为黑色 我想在同一台机器上处理多个图像 如果其中一个不是黑色 则停止该过程 我在这里读了很多 python celery 等中的多处理 但我不知
  • 摄像头读取条码后自动检测并捕获条码

    我用过这个android vision 项目 https github com googlesamples android vision扫描条形码 当相机检测到条形码时 我目前需要手动点击以捕获它 但是 我想稍微更改一下代码 以便在检测到条
  • 为什么C++ STL映射容器的复杂度是O(log(n))?

    对于 C STL 容器 例如vector and list 查找元素并插入或删除它们的复杂性是不言而喻的 然而 对于map容器 尽管我从阅读中知道访问和插入复杂性 性能是 O log n 但我无法计算出why 我显然对地图的理解不够深入 因
  • 在 Woocommerce 中的特定电子邮件通知上添加特定产品的自定义文本

    我想仅针对 WordPress 中的 customer completed order php 中的特定产品 产品 ID 1 添加额外的文本 此特定项目等有优惠 其他产品不需要有这条额外的线 有人可以帮我找出这个吗