如何定制woocommerce_email_order_meta仅在新订单邮件中隐藏SKU
如何仅在WooCommerce新订单邮件中隐藏SKU?
你提供的代码会全局修改SKU的启用状态,导致产品页面的SKU也被隐藏。要实现仅在新订单邮件中隐藏SKU,需要针对邮件环境做精准判断,而非直接影响产品页面。
解决方案代码
替换你原来的代码为以下片段:
function sv_only_remove_sku_in_new_order_emails( $enabled ) { global $email; // 仅在非后台且是新订单邮件时禁用SKU显示 if ( ! is_admin() && isset( $email ) && $email->id === 'new_order' ) { return false; } return $enabled; } add_filter( 'wc_product_sku_enabled', 'sv_only_remove_sku_in_new_order_emails' );
代码说明
- 通过全局变量
$email获取当前邮件对象,判断邮件ID是否为new_order(WooCommerce新订单邮件的默认ID) - 条件
! is_admin()确保后台管理界面的SKU不受影响 - 仅在符合新订单邮件的场景下返回
false,禁用SKU显示;其他场景保持原有SKU启用状态,不会影响产品页面或其他类型的邮件
扩展说明
如果需要同时在其他类型的邮件中隐藏SKU,可以扩展$email->id的判断条件,比如添加客户订单确认邮件customer_processing_order:
if ( ! is_admin() && isset( $email ) && in_array( $email->id, array( 'new_order', 'customer_processing_order' ) ) ) { return false; }
内容的提问来源于stack exchange,提问作者ddd
相关产品推荐
相关产品推荐

