Woocommerce уведомления по электронной почте дополнительных получателей в зависимости от роли пользователя - PullRequest
1 голос
/ 02 апреля 2019

В Woocommerce я пытаюсь отправить электронное письмо с новым заказом на дополнительные адреса электронной почты.Другие адреса электронной почты зависят от роли пользователя.

На основе " Добавление получателя электронной почты в зависимости от выбранного значения поля настраиваемого извлечения " код ответа, внесение изменений в него, вот мой код:

add_filter( 'woocommerce_email_recipient_new_order', 'new_order_conditional_email_recipient', 10, 2 );
function new_order_conditional_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) return $recipient; // (Optional)

    // Get the order ID (retro compatible)
    $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

    // Get the customer ID
    $user_id = $order->get_user_id();

    // Get the user data
    $user_data = get_userdata( $user_id );

    // Adding an additional recipient for a custom user role
    if ( in_array( 'user_role1', $user_data->roles )  )
        $recipient .= ', email1@gmail.com';
    elseif ( in_array( 'user_role2', $user_data->roles )  )
        $recipient .= ', email2@gmail.com';

    return $recipient;
}

Я просто не могу понять, как получить информацию о пользователе из заказа.

Это то, что я пытался прямо сейчас, но когда я пытаюсь разместить другого, я получаю "внутренняя ошибка сервера ".

Поэтому я в основном пытаюсь выяснить, как получить поля от пользователя, разместившего заказ.

1 Ответ

0 голосов
/ 02 апреля 2019

Для пользовательских ролей попробуйте следующее:

add_filter( 'woocommerce_email_recipient_new_order', 'new_order_conditional_email_recipient', 10, 2 );
function new_order_conditional_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) 
        return $recipient; 

    // Get an instance of the WP_User Object related to the order
    $user = $order->get_user();

    // Add additional recipient based on custom user roles
    if ( in_array( 'user_role1', $user->roles )  )
        $recipient .= ', email1@gmail.com';
    elseif ( in_array( 'user_role2', $user->roles )  )
        $recipient .= ', email2@gmail.com';

    return $recipient;
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).Должно работать.

...