返回

WooCommerce不同产品订单分别发送不同收件人通知邮件

php

如何根据 WooCommerce 中销售的产品向不同的收件人发送电子邮件通知

问题陈述

您是否厌倦了当 WooCommerce 订单中包含多种商品时将通知发送给默认管理员?想象一下,您可以根据销售的产品将电子邮件发送到相关的企业或个人。这将提高效率并确保相关方及时收到必要的信息。

解决方案

本文将提供一个易于实施的代码段,您可以在 functions.php 文件中添加,从而根据 WooCommerce 订单中销售的产品向不同的收件人发送电子邮件通知。

步骤 1:识别产品 ID

订单包含哪些产品?通过获取每个产品的 ID,您可以确定产品所属的类别或企业。

$product_ids = array();

foreach ( $order->get_items() as $item ) {
    $product_ids[] = $item->get_product_id();
}

步骤 2:确定收件人电子邮件

根据产品 ID,确定应接收通知的收件人电子邮件。您可以根据自己的需要自定义此部分。

switch ( $product_ids[0] ) {
    case 123:
        $recipient_email = '[[email protected]](/cdn-cgi/l/email-protection)';
        break;
    case 456:
        $recipient_email = '[[email protected]](/cdn-cgi/l/email-protection)';
        break;
    case 789:
        $recipient_email = '[[email protected]](/cdn-cgi/l/email-protection)';
        break;
    default:
        $recipient_email = $email->get_recipient();
        break;
}

步骤 3:设置新的收件人

现在,您已识别出收件人,只需将电子邮件通知的收件人设置为该电子邮件地址。

$email->set_recipient( $recipient_email );

代码示例

将以下代码添加到您的 functions.php 文件中以实现此功能:

add_action( 'woocommerce_email_before_send', 'custom_woocommerce_email_recipient', 10, 3 );

function custom_woocommerce_email_recipient( $email_class, $email, $order ) {
    // 获取订单中所有产品的 ID
    $product_ids = array();
    foreach ( $order->get_items() as $item ) {
        $product_ids[] = $item->get_product_id();
    }

    // 根据产品 ID 确定收件人邮箱
    $recipient_email = '';
    switch ( $product_ids[0] ) {
        case 123:
            $recipient_email = '[[email protected]](/cdn-cgi/l/email-protection)';
            break;
        case 456:
            $recipient_email = '[[email protected]](/cdn-cgi/l/email-protection)';
            break;
        case 789:
            $recipient_email = '[[email protected]](/cdn-cgi/l/email-protection)';
            break;
        default:
            $recipient_email = $email->get_recipient();
            break;
    }

    // 设置新的收件人邮箱
    $email->set_recipient( $recipient_email );
}

结论

通过实施此代码,您可以在 WooCommerce 订单中包含多种商品时,向不同的收件人发送定制的电子邮件通知。这对于提高效率和确保相关方及时收到必要信息非常有用。

常见问题解答

  1. 我需要添加其他产品和收件人吗?

是的,您可以根据需要添加任意数量的产品和收件人。只需在 switch 语句中添加额外的 case 语句。

  1. 此方法是否适用于所有 WooCommerce 电子邮件通知?

是的,此方法适用于所有 WooCommerce 电子邮件通知,包括订单确认、发货通知和退款通知。

  1. 是否可以通过插件实现此功能?

虽然有插件可以实现类似的功能,但此方法不需要安装或配置任何额外的插件。

  1. 我需要编辑哪些文件?

您需要编辑 functions.php 文件。

  1. 此方法会影响我的 WooCommerce 网站的其他功能吗?

此方法仅会影响电子邮件通知的收件人,不会影响您网站的其他功能。