如何在WooCommerce客户完成订单邮件中按指定shipping method ID添加消息
调整后的实现方案
WooCommerce 原生的 $order->has_shipping_method() 方法仅匹配配送方式的类型标识(即完整ID中冒号之前的部分),无法精准匹配带实例ID的完整配送方式ID,因此我们需要手动遍历订单的配送方式项做精确比对。
修改后的代码
add_action ('woocommerce_email_order_details', 'custom_email_notification_for_shipping', 5, 4); function custom_email_notification_for_shipping( $order, $sent_to_admin, $plain_text, $email ){ // 仅针对客户订单完成邮件触发 if ( 'customer_completed_order' != $email->id ) { return; } // 遍历订单所有配送方式,匹配完整ID local_pickup:10 $shipping_methods = $order->get_shipping_methods(); $target_method_found = false; foreach ( $shipping_methods as $method ) { if ( $method->get_method_id() . ':' . $method->get_instance_id() === 'local_pickup:10' ) { $target_method_found = true; break; } } // 匹配到目标配送方式时输出自定义内容 if ( $target_method_found ) { $order_id = $order->get_id(); // 可按需使用订单ID做其他逻辑 // 自定义提示内容 按需修改即可 echo "<h2>自提提醒</h2> <p>您的订单已备货完成,可在营业时间前往对应门店自提</p>"; } }
代码说明
- 先判断当前邮件是否为客户订单完成通知,不符合条件直接终止逻辑,性能更优
- 通过
$order->get_shipping_methods()获取订单所有配送实例 - 拼接配送方式类型ID和实例ID得到完整配送ID,和目标值
local_pickup:10做精确比对 - 匹配成功后输出自定义提示内容,你可以自行替换HTML部分的文本和样式
内容的提问来源于stack exchange,提问作者carlaa123
相关产品推荐
相关产品推荐

