Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向相关经理发送新订单电子邮件通知_Php_Wordpress_Woocommerce_User Roles_Email Notifications - Fatal编程技术网

Php 向相关经理发送新订单电子邮件通知

Php 向相关经理发送新订单电子邮件通知,php,wordpress,woocommerce,user-roles,email-notifications,Php,Wordpress,Woocommerce,User Roles,Email Notifications,因此,网站的设置如下: 有两种类型的角色,一种是下订单(客户),一种是处理订单(经理)。 他们可以分为多个小组,每个小组都有自己的客户和经理(可能有多个)。 经理们需要收到其团队内新订单的通知,并且为了支付假期和病假,每个经理都会收到其团队内的所有订单。 我已经到了经理们收到新订单电子邮件的地步,但是,他们多次收到邮件。发送的重复邮件数量与添加到收件人列表中的邮件数量相同,我一生都无法找出原因 代码: 我发现的一切都和我拥有的一模一样。以逗号分隔的地址列表应该有效。 没有支付系统,所以没有外部触

因此,网站的设置如下:
有两种类型的角色,一种是下订单(客户),一种是处理订单(经理)。
他们可以分为多个小组,每个小组都有自己的客户和经理(可能有多个)。
经理们需要收到其团队内新订单的通知,并且为了支付假期和病假,每个经理都会收到其团队内的所有订单。
我已经到了经理们收到新订单电子邮件的地步,但是,他们多次收到邮件。发送的重复邮件数量与添加到收件人列表中的邮件数量相同,我一生都无法找出原因

代码:

我发现的一切都和我拥有的一模一样。以逗号分隔的地址列表应该有效。 没有支付系统,所以没有外部触发器。通过在组中添加和删除经理进行测试,重复的数量也随之变化


感谢您的帮助,因为这几天来一直困扰着我。

首先,您无法在电子邮件通知中获取当前用户ID,因为这是一个后台过程。您可以使用
WC\u order
方法
get\u customer\u ID()
获取属于订单的客户ID

现在你会收到重复的电子邮件,因为你的代码中有一些错误,这可以简化

我假设“经理”是一个自定义用户角色,因为WooCommerce使用“商店经理”

因此,请尝试以下方法:

// Send mail to Manager on new order
add_filter('woocommerce_email_recipient_new_order', 'my_new_order_email_recipient', 10, 2);
function my_new_order_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) 
        return $recipient;

    $customer_id    = $order->get_customer_id();
    $customer_group = get_user_meta( $customer_id, 'group_meta_key', true );
    $manager_emails = [];

    // Get an array of WP_User from "manager" user role
    $users = get_users(['role' => 'manager']);

    if ( count($users) > 0 ) {
        foreach ( $users as $user ) {
            if ( $customer_group === get_user_meta( $user->ID, 'group_meta_key', true ) ) {
                $manager_emails[] = $user->data->user_email;
            }
        }
        if( count($manager_emails) > 0 ) {
            $recipient = implode(',', $manager_emails);
        }
    }
    return $recipient;
}

代码进入活动子主题(或活动主题)的functions.php文件。它应该是有效的(未经测试)。

Loic,如果不是为了社交距离,我现在就吻你。
// Send mail to Manager on new order
add_filter('woocommerce_email_recipient_new_order', 'my_new_order_email_recipient', 10, 2);
function my_new_order_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) 
        return $recipient;

    $customer_id    = $order->get_customer_id();
    $customer_group = get_user_meta( $customer_id, 'group_meta_key', true );
    $manager_emails = [];

    // Get an array of WP_User from "manager" user role
    $users = get_users(['role' => 'manager']);

    if ( count($users) > 0 ) {
        foreach ( $users as $user ) {
            if ( $customer_group === get_user_meta( $user->ID, 'group_meta_key', true ) ) {
                $manager_emails[] = $user->data->user_email;
            }
        }
        if( count($manager_emails) > 0 ) {
            $recipient = implode(',', $manager_emails);
        }
    }
    return $recipient;
}