【问题标题】:Woocommerce role based email emailsWoocommerce 基于角色的电子邮件
【发布时间】:2019-01-06 10:22:39
【问题描述】:

我们有三个不同的客户组,每个组都有不同的客户经理。有没有办法根据组向客户经理发送 Woocommerce 订单确认电子邮件? 例如:

  • 我们有组 1 的用户角色“Gold”。客户经理有电子邮件 gold@mysite.com
  • 另一组是“银”。客户经理有电子邮件
    silver@mysite.com

现在,如果来自第 1 组(黄金)的客户下订单,则订单通知电子邮件应发送至 gold@mystite.com。如果 Silver 集团的客户下订单,则应将订单通知发送至电子邮件 silver@mysite.com

目前我们已经尝试过this code snippet here,但它也会向管理员发送电子邮件。如果客户不是上述用户角色,我们希望向管理员发送电子邮件。

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    试试下面的代码。

    add_action( 'init', 'Change_admin_mail_email');
    
    function Change_admin_mail_email(){  
    
    
      global $wp_roles;
    
      $roles = $wp_roles->get_names();
      $roles =array_keys($roles);
    
    
             foreach($roles as $User_role_value)
    
             {
                add_filter( 'woocommerce_email_from_address', function( $from_email, $wc_email ){
    
                    if($User_role_value=='gold')
                    {
                          $from_email = 'gold@mysite.com';
                    }
                    elseif($User_role_value=='silver')
    
    
                    {
                         $from_email = 'silver@mysite.com';
                    }
    
    
                    elseif($User_role_value=='platinum')
                    {
                         $from_email = 'platinum@mysite.com';
                    }
    
    
                return $from_email;
                }, 10, 2 );  
    
             }
    
    }
    

    【讨论】:

    • 不幸的是,这些 sn-ps 没有按照我想要的方式工作。这些 sn-ps 更改了“来自电子邮件”的地址,但描述的是订单电子邮件管理员通知应根据用户角色发送到不同的管理员电子邮件。
    【解决方案2】:

    试试下面这个代码你当前活动的主题functions.php文件。

    add_filter( 'woocommerce_email_from_address', function( $from_email, $wc_email ){
    
        $user_id = get_current_user_id();
        $user_data = get_userdata( $user_id );
    
        if ( in_array( 'gold', $user_data->roles )  )
        {
            $from_email = 'gold@mysite.com';
        }
    
        elseif ( in_array( 'silver', $user_data->roles )  )
        {
                $from_email = 'silver@mysite.com';
        }
    
        elseif ( in_array( 'platinum', $user_data->roles )  )
        {
                $from_email = 'platinum@mysite.com';
        }
    
        return $from_email;
    }, 10, 2 );  
    

    【讨论】:

    • 不幸的是,这些 sn-ps 没有按照我想要的方式工作。这些 sn-ps 更改了“来自电子邮件”的地址,但描述的是订单电子邮件管理员通知应根据用户角色发送到不同的管理员电子邮件。
    猜你喜欢
    • 2022-10-05
    • 2018-06-26
    • 1970-01-01
    • 2013-07-25
    • 2015-05-08
    • 2019-08-24
    • 2018-02-25
    • 2016-07-05
    • 1970-01-01
    相关资源
    最近更新 更多