将产品描述添加到 WooCommerce 电子邮件通知

2023-12-07

如何将单个产品页面的产品描述/内容(不是简短描述)添加到 WooCommerce新命令电子邮件通知?

我需要知道我的产品的具体书面描述,因为它们大多数几乎相同。


当您定位特定的电子邮件通知时,首先我们需要获取Email ID以“新订单”电子邮件通知为目标。唯一的方法是之前获取它并在全局变量中设置该值。

然后在一个自定义函数中挂钩woocommerce_order_item_meta_end操作挂钩,我们专门为新订单电子邮件通知显示产品描述。

这是该代码:

 ## Tested on WooCommerce 2.6.x and 3.0+

// 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, 4 );
function product_description_in_new_email_notification( $item_id, $item, $order = null, $plain_text = false ){

    // 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"
    if ( 'new_order' == $email_id ) {

        if( version_compare( WC_VERSION, '3.0', '<' ) ) { 
            $product_id = $item['product_id']; // Get The product ID (for simple products)
            $product = wc_get_product($item['product_id']); 
        } else {
            $product = $item->get_product();
            
            if( $product->is_type('variation') ) {
                $product = wc_get_product( $item->get_product_id() );
            }
        }

        // Get the Product description (WC version compatibility)
        if ( method_exists( $item['product'], 'get_description' ) ) {
            $product_description = $product->get_description(); // for WC 3.0+ (new)
        } else {
            $product_description = $product->post->post_content; // for WC 2.6.x or older
        }

        // Display the product description
        echo '<div class="product-description"><p>' . $product_description . '</p></div>';
    }
}

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

这段代码已经过测试并且可以工作。

代码更新和错误解释woocommerce_order_item_meta_end动作挂钩:

woocommerce_order_item_meta_end 的 PHP 警告 (Mike Joley)

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

将产品描述添加到 WooCommerce 电子邮件通知 的相关文章

  • 很好地阻止了齿轮工人

    我有许多 Gearman 工作人员不断运行 保存用户页面浏览记录等内容 偶尔 我会更新 Gearman 工作人员使用的 PHP 代码 为了让工作人员切换到新代码 我杀死并重新启动了工作人员的 PHP 进程 有什么更好的方法来做到这一点 据推
  • Smarty 3 或更早版本中有类似 Dwoo-s {with} 或 {loop} 的东西吗?

    Dwoo 模板引擎中的 with 和 loop 插件更改变量名称解析的默认上下文 如果在 Dwoo 中您提供模板 arr foo with arr foo arr foo with 有数据 array arr gt array foo gt
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 我如何知道请求是否来自 flash swf?

    我有一个用 flash 开发的应用程序 我需要访问一些 php 文件 因此 如果访问来自 swf 则 php 文件会返回一些数据 如何判断请求是否来自Flash 无需将 get post 变量传递给 php 可能是用户代理 推荐人 请记住
  • 为什么当尝试使用 $this->data 访问 CakePHP 时,密码字段为空?

    我正在实现一个身份验证组件 这是我的注册页面 create User array action gt login echo form gt input primary email array size gt 32 echo form gt
  • PHP上传文件产生错误代码4。为什么?

    HTML
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • TCPDF/PHP 和字体:大写数字(血统数字?旧样式?)

    我得到了一种特殊的字体 上面有这样的数字 例如 正如您在 3 上看到的 一些数字下降到基线以下 我想要实现的是 这些数字不会低于该线 并且看起来像这样 在 Word 中 可以在相同字体的字符设置中轻松设置 如何在 TCPDF 中呈现数字 我
  • Facebook 中用户的时区是如何编码的

    我需要检查用户的时区 但我找不到它的真正定义 参考API http developers facebook com docs reference api user says 用户的时区与 UTC 的偏移量 现在在维基百科上这些是可能的时区
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • PHP 相等变量

    我想知道是否有任何方法可以检查大量变量是否相等 如果我只有几个变量 我可以这样做 if a b a c b c 但是 如果我有 20 个变量 则需要一些时间来编写所有组合 还有其他方法吗 if count array unique arra
  • 根据通过 AJAX 请求的用户输入重绘 google 图表

    我有一个谷歌图表从我的数据库中提取数据 它可以按我想要的方式工作 根据 URL 中的 get 请求 它从所选表中提取数据 我想根据下拉菜单中选定的表通过 ajax 更新此图表 我无法突破的部分是通过 ajax 获取数据响应 我认为下面的代码
  • DOMPDF - 未找到“字体”类

    我正在尝试通过命令行添加字体 每次我尝试都会收到以下错误 Fatal error Class Font not found in home scripts public html MarketingPalv2 load font php o
  • Twig:选择某些块并渲染它们

    我正在将 twig 模板引擎集成到 PHP 应用程序中 特别是 我想使用 twig 引擎来渲染表单 了解了 symfony2 如何使用 twig 渲染表单小部件后 他们有一个巨大的模板文件 其中包含所有小部件 如下所示 block pass
  • 使用php将文本文件转换为xml?

    data txt ha15rs 250 home2 gif 2 ha36gs 150 home3 gif 1 ha27se 300 home4 gif 4 ha4678 200 home5 gif 5 我想使用 php 使用 simplex
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • laravel 5.4 在请求验证之前修改数据[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有我的自定义请求 它扩展了 Backpack CrudController 现在我想重写 ValidatesWhenResolv
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http

随机推荐

  • 显式转换运算符 bool

    我有以下代码 class C public C bool v v v explicit operator bool const return v bool v false int main C a true C b false C d tr
  • android eclipse 在布局中使用字符串资源作为文本大小

    我希望能够在资源中存储字体大小 18sp 以便我的很多布局都可以使用 以便我将来可以根据需要轻松更改大小 我在字符串资源文件中有一个字符串 其值为 18sp 我可以通过将文本大小设置为 strings string name 来在布局编辑器
  • 如何在 Node 中用换行符('\n')分割字符串?

    在 Node 中 如何使用换行符 n 分割字符串 我有一个简单的字符串 例如var a test js nagain js 我需要得到 test js again js 我试过 a split n a split n a split r n
  • 如何在 Rust 中重用类似但不同类型的代码?

    我有一个具有一些功能的基本类型 包括特征实现 use std fmt use std str FromStr pub struct MyIdentifier value String impl fmt Display for MyIdent
  • .gitattributes 中的合并策略不起作用

    我希望 git 永远不会在这个文件上发生冲突 test file txt合并时 我在 gitattributes 中尝试了以下操作 test file txt merge 他们的 但我需要定义theirs合并策略 我在网上看到我可以定义ou
  • 通过 Python 发送 Outlook 电子邮件?

    我在用Outlook 2003 发送电子邮件的最佳方式是什么 通过Outlook 2003 using Python import win32com client as win32 outlook win32 Dispatch outloo
  • 使用按位运算符模拟 C 中的浮点乘法

    Closed 这个问题需要多问focused 目前不接受答案 我必须编写一个程序来模拟浮点乘法 对于这个程序 我们假设一个单精度浮点数存储在unsigned long a 我必须将存储的数字相乘a2 仅使用以下运算符 lt lt gt gt
  • 从 ASP.Net 登录控件 LoggedIn 事件获取 UserID

    在 ASP Net 中 我试图在登录控件的 LoggedIn 事件中获取刚刚登录的用户的 UserId 即用户 GUID 也就是说 我想在用户移动到下一页之前获取 UserId 这是我正在使用的代码 Protected Sub Login1
  • 什么是向 SQL 传递参数?为什么需要它?

    初学者在这里 In this answer对于我如何将数据插入 SQL Server 的问题 他提到传递参数而不是像我目前使用的字符串连接 为了安全 这真的有必要吗 如果是的话 传递参数到底是什么 当我用谷歌搜索时 我得到了很多关于存储过程
  • WPF 中的选项卡式文档界面仅使用板载方式?

    我在这里看到了两个关于 TDI 和 C 的线程 他们俩都没有真正回答我的问题 由于现在 TDI 非常类似于标准 我很难想象我必须购买特殊的控件 如 AvalonDock 或 SandDock 这必须可以通过内置选项卡控件 以某种方式实现 我
  • 使用 JQuery Ajax 调用调用 Rest Web 服务,Web 服务返回 JSON 字符串

    我做了一个 Rest Web 服务 package org jboss samples rs webservices import javax ws rs PathParam import javax ws rs Produces impo
  • 向上游执行干净的 git pull 请求

    我已经克隆了一个存储库 确保将原始存储库标记为upstream 并采用 gitflow 方式 创建一个develop所有新功能都从该分支创建并提交回 每一次推动Master from develop根据定义是一个版本 意思是master始终
  • JFreeChart 和 Y 轴单位

    我有一个 StackedXYAreaChart 如下所示 如何设置 Y 轴单位的格式 以便它们均匀分布并以一定的间隔显示 例如 不要以 1 为增量显示单位 例如0 1 2 3 100 我想以 10 或 25 为增量显示单位 例如 0 25
  • 创建新的 React 应用程序时出错(“您正在运行 `create-react-app` 4.0.3,它落后于最新版本 (5.0.0)”)

    即使在完成卸载部分之后 我还是一次又一次地收到此 create React app 错误 npm uninstall g create react app 最新 在 570 毫秒内审核了 1 个包 发现0个漏洞 npx create rea
  • 如何在Linux上安装C++库

    我是Linux环境下的菜鸟 我正在使用 ubuntu 13 10 我想安装犰狳 自述文件说我应该首先安装另外三个库 LAPACK BLAS 和 ATLAS 我下载了lapack 3 5 0 但我不知道如何安装 我只知道apt get ins
  • Python 对象与 .NET 对象的比较

    我对 NET 对象及其引用类型与值类型的框架非常满意 Python 对象与 NET 对象相比如何 具体来说 我想知道平等obj1 obj2 散列能力 即能够放入字典中 和复制 例如 默认情况下 在 NET 中 所有对象都是引用类型 它们的相
  • 使用 IOCTL_DVD_* 控制代码从 C# 调用 DeviceIoControl

    我正在尝试从 C 调用 DeviceIoControlIOCTL DVD 控制代码 阅读了大量信息并尝试了一些示例后 我并没有取得太大进展 我最终想做的是得到一个DVD LAYER DESCRIPTOR有关 DVD 驱动器中当前媒体的结构
  • 实体框架覆盖标识列

    我有一个 Code First EF 类 如下所示 public class Event Key DatabaseGeneratedAttribute DatabaseGeneratedOption Identity public int
  • python opencv HSV测距仪创建轨迹栏

    我想使用 opencv 和 python 查找激光点的 HSV 值 我得到了代码http opencv srf blogspot com au 2010 09 object detection using color seperation
  • 将产品描述添加到 WooCommerce 电子邮件通知

    如何将单个产品页面的产品描述 内容 不是简短描述 添加到 WooCommerce新命令电子邮件通知 我需要知道我的产品的具体书面描述 因为它们大多数几乎相同 当您定位特定的电子邮件通知时 首先我们需要获取Email ID以 新订单 电子邮件