自定义HTML交易邮件中WooCommerce多商品订单展示异常求助
解决方案:拆分多商品数据为表格多行
1. 在Zapier中拆分商品数组(核心操作)
Zapier获取WooCommerce订单数据时,默认会把多商品字段合并成逗号分隔字符串,需要先拆分出每个商品的独立数据:
- 在WooCommerce触发步骤之后,添加Formatter by Zapier工具,选择「Utilities」分类下的「Line Itemizer」
- 将商品名称、描述、数量这三个逗号分隔的字段分别填入对应「Input」框,设置「Separator」为逗号(
,) - 测试运行后,Zapier会自动将每个商品的信息拆分成独立的行项目(Line Items)
2. 修改Campaign Monitor模板实现循环渲染
更新你的自定义HTML模板,用Campaign Monitor的模板语法遍历拆分后的商品行项目:
<div class="s-table-container"> <table class="s-table"> <thead> <tr> <th>Products</th> <th>Description.</th> <th>Quant.</th> </tr> </thead> <tbody> {{#each line_items}} <tr> <td>{{product_name}}</td> <td>{{product_description}}</td> <td>{{quantity}}</td> </tr> {{/each}} </tbody> </table> </div>
注意:把
line_items、product_name等变量替换成你在Zapier中设置的实际行项目字段名,确保和Zapier输出的字段完全匹配。
3. 验证Zapier数据映射
在Zapier的Campaign Monitor发送邮件步骤中,确保将拆分后的行项目字段(而非原始逗号分隔字符串)映射到模板对应的循环变量:
- 找到邮件内容设置区,选择「Use Custom HTML」
- 关联模板变量时,选择Zapier中Line Itemizer输出的单个商品字段,不要选合并后的字符串
备选方案:WooCommerce端预处理订单数据
如果Zapier的Line Itemizer无法满足需求,可以在WooCommerce中添加自定义代码,将订单商品数据格式化为数组后传递给Zapier:
// 代码添加到主题functions.php或自定义插件 add_action('woocommerce_order_status_completed', 'custom_format_order_items_for_zapier', 10, 1); function custom_format_order_items_for_zapier($order_id) { $order = wc_get_order($order_id); $items = []; foreach ($order->get_items() as $item) { $items[] = [ 'product_name' => $item->get_name(), 'product_description' => $item->get_description(), 'quantity' => $item->get_quantity() ]; } // 将格式化后的商品数组存入自定义字段,供Zapier获取 update_post_meta($order_id, 'zapier_formatted_items', json_encode($items)); }
之后在Zapier的WooCommerce触发步骤中,获取这个自定义字段的JSON数据,解析后直接传入Campaign Monitor模板的循环逻辑即可。
内容的提问来源于stack exchange,提问作者Rafał Ablewski
相关产品推荐
相关产品推荐

