WooCommerce根据配送方式、国家自定义订单完成邮件内容
WooCommerce 订单完成邮件自定义文本(按配送方式/区域)
关于Flat rate的疑问
WooCommerce里默认的「Flat rate」就是固定费率配送方式,部分场景下确实会被称为「Fixed rate」,二者指的是同一个东西。
完善后的代码(覆盖所有规则)
add_action( 'woocommerce_email_order_details', 'custom_completed_order_email_text', 10, 4 ); function custom_completed_order_email_text( $order, $sent_to_admin, $plain_text, $email ) { // 仅针对客户的订单完成邮件 if( 'customer_completed_order' !== $email->id ) return; // 获取订单配送国家(ISO两位代码,爱沙尼亚为EE) $shipping_country = $order->get_shipping_country(); // 替换成你实际需要的自定义文本 $custom_text_1 = "<p><strong>自定义文本1内容</strong></p>"; $custom_text_2 = "<p><strong>自定义文本2内容</strong></p>"; $custom_text_3 = "<p><strong>自定义文本3内容</strong></p>"; foreach( $order->get_items('shipping') as $shipping_item ){ $shipping_rate_id = $shipping_item->get_method_id(); $method_array = explode(':', $shipping_rate_id ); $shipping_method_id = reset($method_array); // 规则4:所有Flat rate配送方式,优先级最高 if( 'flat_rate' === $shipping_method_id ){ echo $custom_text_3; break; } // 规则1:爱沙尼亚 + Local pickup if( 'EE' === $shipping_country && 'local_pickup' === $shipping_method_id ){ echo $custom_text_1; break; } // 规则3:爱沙尼亚境外 且 非Flat rate(已排除Flat rate,直接判断国家) if( 'EE' !== $shipping_country ){ echo $custom_text_2; break; } // 规则2:爱沙尼亚+其他配送方式,无需额外输出,保留原邮件内容 } }
代码逻辑说明
- 先过滤掉非客户订单完成的邮件,避免在其他通知里触发
- 通过
get_shipping_country()获取配送国家的ISO代码,爱沙尼亚对应EE - 提前定义三个自定义文本变量,直接替换成你需要的内容即可
- 按规则优先级处理:Flat rate规则优先级最高(覆盖所有区域);接着处理爱沙尼亚本地自提;再处理境外非Flat rate的情况;最后爱沙尼亚其他配送方式直接保留原邮件内容
内容的提问来源于stack exchange,提问作者Karl Helberg
相关产品推荐
相关产品推荐

