如何在用户使用指定优惠券完成订单时发送订单详情邮件?
在WooCommerce中针对使用特定优惠券的订单发送专属订单详情邮件
实现思路
利用WooCommerce的订单完成钩子触发检查逻辑,判断订单是否使用了指定优惠券,满足条件则发送包含订单详情的自定义邮件。
具体代码实现
将以下代码添加到主题functions.php文件或自定义插件中:
// 监听订单完成状态事件 add_action('woocommerce_order_status_completed', 'send_email_for_target_coupon_order', 10, 1); function send_email_for_target_coupon_order($order_id) { // 替换为你需要监控的优惠券代码 $target_coupon = 'YOUR_TARGET_COUPON_CODE'; // 获取订单对象 $order = wc_get_order($order_id); if (!$order) return; // 检查订单是否使用了目标优惠券 $used_coupons = $order->get_used_coupons(); if (!in_array($target_coupon, $used_coupons)) return; // 配置邮件参数 $recipient = $order->get_billing_email(); $subject = '你的订单详情(已使用优惠券:' . $target_coupon . ')'; // 构建邮件内容 $email_body = '<h2>订单信息</h2>'; $email_body .= '<p>订单编号:' . $order->get_order_number() . '</p>'; $email_body .= '<p>下单时间:' . wc_format_datetime($order->get_date_created()) . '</p>'; $email_body .= '<h3>商品清单</h3>'; $email_body .= '<ul>'; foreach ($order->get_items() as $item) { $product = $item->get_product(); $email_body .= '<li>' . $item->get_name() . ' × ' . $item->get_quantity() . ' 单价:' . wc_price($item->get_subtotal()) . '</li>'; } $email_body .= '</ul>'; $email_body .= '<p>订单总价:' . wc_price($order->get_total()) . '</p>'; $email_body .= '<p>感谢你的支持,如有问题请联系客服!</p>'; // 发送邮件 wc_mail($recipient, $subject, $email_body); }
代码说明
- 钩子触发时机:
woocommerce_order_status_completed钩子确保订单已成功完成后才执行邮件发送逻辑 - 优惠券校验:通过
get_used_coupons()获取订单使用的优惠券列表,精准匹配目标优惠券 - 内容自定义:可根据需求修改邮件主题和内容,比如添加收货地址、支付方式等额外信息
- 代码安全性:建议使用自定义插件存放代码,避免主题更新导致代码丢失
注意事项
- 替换代码中的
YOUR_TARGET_COUPON_CODE为实际需要监控的优惠券代码 - 测试时可手动将订单状态改为「已完成」验证邮件发送效果
- 确保服务器支持PHP邮件发送功能,若发送失败可检查服务器邮件日志排查问题
内容的提问来源于stack exchange,提问作者WSSh
相关产品推荐
相关产品推荐

