基于 WooCommerce 电子邮件通知中销售的产品的不同收件人

Posted

技术标签:

【中文标题】基于 WooCommerce 电子邮件通知中销售的产品的不同收件人【英文标题】:Different recipients based on products sold in WooCommerce email notification 【发布时间】:2019-08-28 00:14:53 【问题描述】:

我希望在 WooCommerce 上为不同的企业销售一些虚拟物品。因此,当客户结帐时,我希望将电子邮件发送给相关企业(而不是管理员)。

因此,当产品 A 售出时,一封电子邮件将发送至 a@email.com。产品 B 售出后,电子邮件将发送至 b@email.com。产品 C 售出后,电子邮件将发送至 c@email.com...等等。

是否有一些代码可以添加到functions.php 来实现这一点?

【问题讨论】:

【参考方案1】:

基于“Different recipients based on product category in WooCommerce email notification” 答案代码,以下将允许根据产品 ID 添加不同的电子邮件收件人:

add_filter( 'woocommerce_email_recipient_new_order', 'custom_email_recipient_new_order', 10, 2 );
function custom_email_recipient_new_order( $recipient, $order ) 
    // Not in backend when using $order (avoiding an error)
    if( ! is_a($order, 'WC_Order') ) return $recipient;

    // Define the email recipients / product Ids pairs
    $recipients_product_ids = array(
        'product.one@email.com'   => array(37),
        'product.two@email.com'   => array(40),
        'product.three@email.com' => array(53, 57),
    );

    // Loop through order items
    foreach ( $order->get_items() as $item ) 
        // Loop through defined product categories
        foreach ( $recipients_product_ids as $email => $product_ids ) 
            $product_id   = $item->get_product_id();
            $variation_id = $item->get_variation_id();
            if( array_intersect([$product_id, $variation_id], $product_ids) && strpos($recipient, $email) === false ) 
                $recipient .= ',' . $email;
            
        
    
    return $recipient;

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

以上是关于基于 WooCommerce 电子邮件通知中销售的产品的不同收件人的主要内容,如果未能解决你的问题,请参考以下文章

在 WooCommerce 电子邮件通知中更改订单项元数据

如何防止在 WooCommerce 电子邮件通知中运行挂钩

从 WooCommerce 中的电子邮件通知中删除 BACS 指令

通过 WooCommerce 管理员电子邮件通知中的“woocommerce_email_order_meta”挂钩显示产品自定义字段

在 Woocommerce 订单电子邮件通知中获取用户 ID [重复]

在 Woocommerce 订单和电子邮件通知中显示产品品牌和名称