如何在WooCommerce订单完成邮件中按礼品类商品显示自定义文本
解决方案:仅针对礼品分类商品显示订单完成邮件自定义文本
嗨,这问题很好解决!我们只需要在你现有代码的基础上,增加一个检查订单中是否包含"Gift"分类商品的逻辑就可以了。下面是修改后的完整代码,我会给你拆解关键部分:
add_action( 'woocommerce_email_before_order_table', 'bbloomer_add_content_specific_email', 20, 4 ); function bbloomer_add_content_specific_email( $order, $sent_to_admin, $plain_text, $email ) { // 初始化标记:默认订单不含礼品分类商品 $has_gift_product = false; // 遍历订单里的每一件商品 foreach ( $order->get_items() as $item ) { $product_id = $item->get_product_id(); // 检查当前商品是否属于"Gift"分类(这里用分类的slug,要和你后台设置一致) if ( has_term( 'gift', 'product_cat', $product_id ) ) { $has_gift_product = true; break; // 找到符合条件的商品就停止遍历,提升效率 } } // 只有同时满足两个条件才显示文本:1. 是客户完成订单邮件;2. 订单含礼品商品 if ( $email->id == 'customer_completed_order' && $has_gift_product ) { echo '<p class="email-text-conditional">Thank you for your order with Adventure Clues, we have sent your recipient the gift card</p>'; } }
重要注意事项:
- 代码里的
'gift'是商品分类的slug(不是显示名称)。如果你后台的礼品分类slug不是gift(比如是gifts),一定要改成对应的slug,否则判断会失效。 has_term()是WooCommerce原生支持的函数,专门用来检测商品是否属于指定分类/标签,这里我们用它精准判断每个订单商品的分类归属。- 遍历订单商品时用
break跳出循环,避免不必要的计算,让代码运行更高效。
把这段代码替换你原来的代码,放到主题的functions.php文件或者自定义插件里,测试一下包含礼品分类商品的订单,就能看到自定义文本只在符合条件的邮件里显示啦!
内容的提问来源于stack exchange,提问作者Usama Shabbier
相关产品推荐
相关产品推荐

