Использование пользовательской функции, подключенной к woocommerce_thankyou
хуку действия, позволит вам создавать условные уведомления по электронной почте на основе ролей пользователей и нескольких настраиваемых получателей.
Вам нужно будет заменить электронную почту администраторов и суперадминистраторов в этой функции.
Вам также нужно будет проверить, что роли пользователей совпадают в 3 операторах if... Идентификатор для недвижимости не может иметь пробела и вместо этого должен быть: 'real_estate'
При этом будут отправляться уведомления по электронной почте для заказов со статусом «приостановлено», «ожидание», «в обработке» или «завершено»...
Как только это пользовательское электронное письмо будет запущено, для заказа будет установлено пользовательское поле '_custom_emails_sent'
.
Вот код:
add_action( 'woocommerce_thankyou', 'custom_new_order_email_notifications', 10, 1 );
function custom_new_order_email_notifications( $order_id ){
// If Custom Emails already sent we exit
if( get_post_meta( $order_id, '_custom_emails_sent', true ) ) return;
$targeted_statuses = array( 'wc-on-hold', 'wc-pending', 'wc-processing', 'wc-completed' );
$order_status = get_post_status( $order_id );
// Only for the correct order statuses; If not we exit
if( ! in_array( $order_status, $targeted_statuses ) ) return;
// HERE (below) replace super admins and admins REAL emails
$super_admin_emails = array(
'[email protected]', '[email protected]' );
$admin_emails = array(
'[email protected]', '[email protected]',
'[email protected]', '[email protected]', '[email protected]' );
// Get the user of the order
$user_id = get_post_meta( $order_id, '_customer_user', true );
$user = get_userdata( $user_id );
$recipient = '';
// 1. Bank Customers user role
if( in_array('banks', $user->roles) ){
$recipients = implode(',', $admin_emails);
}
// 2. Real estate Customers user role
if( in_array('real_estate', $user->roles) ){
$recipients = implode(',', $admin_emails);
}
// 3. Admins Customers user role
if( in_array('admin2', $user->roles) ){
$recipients = implode(',', $admin_emails);
}
// Sending new order email notification to the targeted recipients
if( '' != $recipients ){
$mailer = WC()->mailer()->get_emails();
$mailer['WC_Email_New_Order']->recipient = $recipients;
$mailer['WC_Email_New_Order']->trigger( $order_id ); // sending
// We set a custom field that will avoid repetitive sends
update_post_meta( $order_id, '_custom_emails_sent', '1' );
}
}
Код находится в файле function.php вашей активной дочерней темы (или активной темы).
Проверено и работает
person
LoicTheAztec
schedule
11.01.2018