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

花韻仙語
发布: 2025-10-06 09:42:13
原创
329人浏览过

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

本文将指导您如何针对特定的 WooCommerce 订单邮件通知,有选择性地移除产品购买备注,避免在所有邮件中都隐藏该信息。

使用 WooCommerce 钩子和全局变量进行控制

WooCommerce 允许开发者通过钩子(hooks)修改其核心功能。为了实现我们的目标,我们需要使用 woocommerce_email_order_items_args 过滤器和全局变量来确定当前正在处理的邮件类型。

步骤 1:设置全局变量以获取邮件 ID

首先,我们需要创建一个函数,该函数会在订单邮件内容生成之前运行,并将邮件 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 的函数,它接收订单对象、是否发送给管理员、是否为纯文本邮件以及邮件对象作为参数。它将邮件对象的 id 属性存储在全局变量 $GLOBALS['email_id_str'] 中。然后,它使用 add_action 函数将此函数挂钩到 woocommerce_email_before_order_table 动作,优先级为 10,并传递 4 个参数。

步骤 2:使用过滤器修改邮件参数

接下来,我们创建一个函数,该函数使用 woocommerce_email_order_items_args 过滤器来修改邮件参数,从而控制是否显示购买备注。

表单大师AI
表单大师AI

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

表单大师AI74
查看详情 表单大师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,该参数是一个包含订单项目参数的数组。它首先获取全局变量 $email_id_str 的值,并将其存储在 $email_id 变量中。然后,它使用 in_array 函数检查 $email_id 是否在包含要隐藏购买备注的邮件 ID 的数组中。如果 $email_id 在数组中,则将 $args['show_purchase_note'] 设置为 false。最后,它返回修改后的 $args 数组。此函数使用 add_filter 函数挂钩到 woocommerce_email_order_items_args 过滤器,优先级为 10,并传递 1 个参数。

步骤 3:确定邮件 ID

在上面的代码中,我们使用了 'customer_completed_order' 和 'customer_invoice' 作为示例邮件 ID。 您可以通过查看 WooCommerce 核心代码或使用调试工具来确定其他邮件的 ID。 常见的邮件 ID 包括:

  • customer_completed_order: 订单完成邮件
  • customer_invoice: 客户发票邮件
  • customer_processing_order: 订单处理中邮件
  • customer_new_account: 新账户创建邮件

注意事项

  • 将上述代码添加到您的 WordPress 主题的 functions.php 文件中,或者使用代码片段插件。
  • 确保您了解 WooCommerce 钩子的工作原理,以便更好地理解和修改代码。
  • 在修改 WooCommerce 核心功能之前,建议备份您的网站。
  • 如果需要针对更多类型的邮件进行定制,只需在 in_array 函数的数组中添加相应的邮件 ID 即可。

总结

通过使用 WooCommerce 提供的钩子和全局变量,我们可以灵活地控制订单邮件的内容,从而优化客户体验。 本教程提供了一种有选择性地移除产品购买备注的方法,您可以根据自己的需求进行修改和扩展。 掌握这些技巧将使您能够更好地定制您的 WooCommerce 商店,并提供更好的用户体验。

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

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

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

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

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