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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:03