导读:本期聚焦于小伙伴创作的《WooCommerce如何实现订单含特定商品时自动发送自定义邮件?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《WooCommerce如何实现订单含特定商品时自动发送自定义邮件?》有用,将其分享出去将是对创作者最好的鼓励。

WooCommerce 订单中特定商品触发自定义邮件的精准控制教程

在WooCommerce搭建的电商站点运营过程中,我们常常需要针对包含特定商品的订单发送专属通知邮件,比如购买了定制商品的用户需要收到制作进度提醒,购买了某类课程的用户需要收到学习指引邮件。如果直接通过WooCommerce默认的邮件系统设置,很难实现对特定商品的精准匹配触发,我们可以通过自定义代码的方式实现这个需求,下面就来详细介绍实现步骤。

核心实现思路

整个功能的实现逻辑可以分为三个部分:首先是监听WooCommerce的订单状态变更事件,当订单状态变为“处理中”这类已付款完成的状态时触发后续逻辑;然后遍历订单中的所有商品,判断是否存在我们指定的目标商品;最后如果匹配到目标商品,就调用WordPress的邮件发送函数,给订单对应的用户发送自定义内容邮件。

准备工作

  • 确认站点已经安装并激活WooCommerce插件,且存在需要触发邮件的目标商品,记录下该商品的ID,后续代码中会用到。
  • 建议先创建一个子主题,将自定义代码放在子主题的functions.php文件中,避免主题更新时代码被覆盖。
  • 如果需要邮件包含HTML格式内容,可以先写好邮件的HTML模板,后续直接引入使用。

完整代码实现

下面的代码实现了当订单中包含ID为123的特定商品,且订单状态变为“处理中”时,向用户发送自定义邮件的功能,你可以根据实际需求修改商品ID、邮件内容和触发条件。

<?php
/**
 * 当订单包含特定商品时触发自定义邮件
 * 商品ID修改为你需要匹配的目标商品ID
 */
add_action('woocommerce_order_status_processing', 'send_custom_email_for_specific_product', 10, 2);
function send_custom_email_for_specific_product($order_id, $order) {
    // 目标商品ID,修改为你的实际商品ID
    $target_product_id = 123;
    $has_target_product = false;

    // 遍历订单中的所有商品
    foreach ($order->get_items() as $item_id => $item) {
        $product = $item->get_product();
        // 判断商品是否为目标商品,兼容简单商品和变体商品
        if ($product && ($product->get_id() == $target_product_id || $product->get_parent_id() == $target_product_id)) {
            $has_target_product = true;
            break;
        }
    }

    // 如果订单包含目标商品,发送自定义邮件
    if ($has_target_product) {
        // 获取订单用户信息
        $user_email = $order->get_billing_email();
        $user_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
        
        // 邮件主题
        $email_subject = '您的订单包含专属商品,请注意查收相关指引';
        
        // 邮件内容,支持HTML格式
        $email_content = '
        <div style="font-family: Arial, sans-serif; padding: 20px;">
            <h2>尊敬的' . esc_html($user_name) . ',您好!</h2>
            <p>您的订单(订单号:' . $order_id . ')中包含我们的专属定制商品,以下是相关指引:</p>
            <ul>
                <li>定制商品制作周期为7-10个工作日,完成后会第一时间通知您</li>
                <li>如有疑问可以随时联系客服邮箱:service@ipipp.com</li>
            </ul>
            <p>感谢您的支持!</p>
        </div>
        ';
        
        // 邮件头信息,设置内容类型为HTML
        $email_headers = array(
            'Content-Type: text/html; charset=UTF-8',
            'From: 站点名称 <noreply@ipipp.com>'
        );
        
        // 发送邮件
        wp_mail($user_email, $email_subject, $email_content, $email_headers);
    }
}
?>

代码说明

首先是钩子部分,我们使用woocommerce_order_status_processing钩子,这个钩子会在订单状态变为“处理中”时触发,也就是用户完成付款后订单进入处理阶段的时间点,你也可以根据需求替换为woocommerce_order_status_completed等其他订单状态钩子。

代码中遍历订单商品时,同时判断了商品的自身ID和父ID,这样可以兼容简单商品和变体商品两种场景,避免变体商品无法被匹配的问题。如果没有变体商品的需求,也可以简化为只判断$product->get_id() == $target_product_id

邮件内容部分使用了HTML格式,你可以根据自己的需求调整样式和文字内容,wp_mail函数是WordPress内置的邮件发送函数,不需要额外配置就可以使用,如果需要使用SMTP发送邮件提升到达率,可以搭配WP Mail SMTP这类插件使用。

注意事项

  • 修改代码中的$target_product_id为你自己的目标商品ID,多个商品的话可以将判断逻辑改为数组匹配,遍历目标商品ID数组即可。
  • 测试的时候可以先创建一个测试订单,购买目标商品后手动将订单状态改为“处理中”,查看是否收到对应邮件,确认功能正常后再正式使用。
  • 如果邮件没有收到,可以先检查垃圾邮箱,同时确认站点的邮件发送功能是否正常,也可以开启WordPress的调试模式查看邮件发送的错误信息。
  • 如果需要给管理员也发送一封通知邮件,只需要在发送用户邮件的代码后,再调用一次wp_mail函数,收件人设置为管理员的邮箱即可。

扩展优化建议

如果需要更灵活的控制,比如不同商品触发不同的邮件内容,可以将商品ID和对应的邮件模板做映射关系,判断到对应商品后调用对应的模板内容。另外也可以给邮件添加退订链接,符合邮件发送的相关规范,避免用户投诉。

WooCommerce自定义邮件特定商品订单通知代码教程

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。