
本文介绍如何通过简单钩子函数移除 woocommerce 管理员收到的新订单邮件头部标题,从而精简邮件内容、优化打印排版,使订单信息更紧凑地适配单页打印。
本文介绍如何通过简单钩子函数移除 woocommerce 管理员收到的新订单邮件头部标题,从而精简邮件内容、优化打印排版,使订单信息更紧凑地适配单页打印。
在 WooCommerce 默认行为中,当客户提交新订单时,系统会自动向管理员发送一封包含完整订单详情的邮件,邮件顶部默认显示「New order」(或对应语言的标题)作为醒目标题。虽然该标题有助于快速识别邮件类型,但在实际打印场景中(尤其是需严格控制在单页 A4 内),这段额外的标题文字和其上方的空白间距往往导致内容溢出第二页。
为解决此问题,WooCommerce 提供了 woocommerce_email_heading_new_order 过滤钩子,允许开发者自定义或清空该标题。只需将以下代码添加到当前主题的 functions.php 文件(推荐使用子主题),或通过代码片段插件(如 Code Snippets)安全启用:
add_filter('woocommerce_email_heading_new_order', 'remove_new_order_heading_for_admin', 10, 2);
function remove_new_order_heading_for_admin($heading, $email) {
// 可选:仅对 admin 邮件生效(避免影响客户邮件)
if ('WC_Email_New_Order' === get_class($email) && $email->get_to() && strpos($email->get_to(), '@') !== false) {
return '';
}
return $heading;
}✅ 说明与优化点:
- 原始答案中的优先级 1 过高,易被其他插件覆盖,建议改为标准 10;
- 第二个参数 $email 可用于精准判断邮件对象,上述示例中通过 get_class() 和 get_to() 初步区分管理员邮件(更严谨方案可结合 $email->recipient 或用户角色判断);
- 若需彻底隐藏标题区域(包括其上方的 padding/margin),还需配合 CSS 覆盖邮件模板样式(可通过 woocommerce_email_styles 钩子注入内联样式);
- 修改后请务必测试:下单后检查管理员邮箱是否收到无标题邮件,并打印预览确认内容完整落入单页。
⚠️ 注意事项:
- 直接修改主题文件前,请确保已启用子主题,避免更新后代码丢失;
- 不建议直接编辑 WooCommerce 核心模板文件(如 templates/emails/admin-new-order.php),因其不可持续且易冲突;
- 如需同时移除其他邮件(如“Processing order”)标题,可复用相同逻辑,替换对应钩子名即可(如 woocommerce_email_heading_customer_processing_order)。
通过这一轻量级定制,您可在不牺牲功能的前提下显著提升订单邮件的打印友好性与管理效率。

















