有选择地移除 WooCommerce 订单邮件中的产品购买备注

聖光之護
发布: 2025-10-06 11:34:01
原创
274人浏览过

有选择地移除 woocommerce 订单邮件中的产品购买备注

在 WooCommerce 商店运营中,有时需要根据不同的邮件类型,调整订单邮件的内容。一个常见的需求是,在订单完成邮件中移除产品购买备注,而在订单确认邮件中保留。直接使用 woocommerce_email_order_items_args 钩子可能会全局禁用购买备注,影响所有邮件。本文将介绍一种更精确的方法,通过邮件ID来控制购买备注的显示,只在指定的邮件类型中生效。

基于邮件ID的解决方案

该方案的核心思想是,首先获取当前正在发送的邮件的ID,然后根据ID判断是否为需要隐藏购买备注的邮件类型。为此,我们需要使用两个钩子:woocommerce_email_before_order_table 和 woocommerce_email_order_items_args。

步骤 1: 获取邮件ID

woocommerce_email_before_order_table 钩子在订单表格之前触发,我们可以利用它来获取邮件ID,并将其存储在一个全局变量中。

// 设置邮件ID为全局变量
function action_woocommerce_email_before_order_table( $order, $sent_to_admin, $plain_text, $email ) {           
    $GLOBALS['email_id_str'] = $email->id;
}
add_action( 'woocommerce_email_before_order_table', 'action_woocommerce_email_before_order_table', 10, 4 );
登录后复制

这段代码定义了一个名为 action_woocommerce_email_before_order_table 的函数,它接收四个参数:$order (订单对象), $sent_to_admin (是否发送给管理员), $plain_text (是否为纯文本格式), 和 $email (邮件对象)。我们只需要 $email 对象,从中提取 id 属性,并将其存储在全局变量 $GLOBALS['email_id_str'] 中。

步骤 2: 根据邮件ID过滤购买备注

现在,我们可以使用 woocommerce_email_order_items_args 钩子,根据全局变量中存储的邮件ID,来决定是否显示购买备注。

表单大师AI
表单大师AI

一款基于自然语言处理技术的智能在线表单创建工具,可以帮助用户快速、高效地生成各类专业表单。

表单大师AI 74
查看详情 表单大师AI
function filter_woocommerce_email_order_items_args( $args ) {
    // 获取邮件ID全局变量
    $refNameGlobalsVar = $GLOBALS;
    $email_id = isset( $refNameGlobalsVar['email_id_str'] ) ? $refNameGlobalsVar['email_id_str'] : '';

    // 针对特定邮件. 可以添加多个状态,用逗号分隔
    if ( in_array( $email_id, array( 'customer_completed_order', 'customer_invoice' ) ) ) {
        // 隐藏购买备注
        $args['show_purchase_note'] = false;
    }

    return $args;
}
add_filter( 'woocommerce_email_order_items_args', 'filter_woocommerce_email_order_items_args', 10, 1 );
登录后复制

这段代码定义了一个名为 filter_woocommerce_email_order_items_args 的函数,它接收一个参数 $args,该参数是一个数组,包含了控制订单项目显示的参数。我们首先从全局变量中获取邮件ID,然后使用 in_array 函数判断该ID是否在需要隐藏购买备注的邮件ID列表中。如果匹配,则将 $args['show_purchase_note'] 设置为 false,从而隐藏购买备注。

步骤 3: 添加代码到您的 WooCommerce 站点

将上述两个代码片段添加到您的 WordPress 主题的 functions.php 文件中,或者使用代码片段插件。

注意事项:

  • 邮件ID: customer_completed_order 是 WooCommerce 订单完成邮件的ID。您可以通过查看 WooCommerce 的源码或使用调试工具来确定其他邮件的ID。
  • 多个邮件ID: 您可以在 in_array 函数的第二个参数中添加多个邮件ID,用逗号分隔,例如 array( 'customer_completed_order', 'customer_processing_order' )。
  • 代码位置: 建议将代码添加到子主题的 functions.php 文件中,以避免主题更新导致代码丢失。

总结

通过这种基于邮件ID的解决方案,您可以精确控制 WooCommerce 订单邮件中产品购买备注的显示,满足不同的业务需求。该方法避免了全局禁用购买备注的副作用,提高了代码的灵活性和可维护性。 请务必根据您的实际需求修改代码,并进行充分的测试。

以上就是有选择地移除 WooCommerce 订单邮件中的产品购买备注的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号