You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:36:52