[英]Conditional custom New Order Woocommerce email notification on different recippients
好的,我有一個似乎不是不可能的問題,但是正確設置條件對我來說是個問題。 這是正在發生的事情,也是我需要的。 我真的認為這是可能的功能。
該商店具有用戶層次結構。 有2個超級管理員(ID:admin),5個管理員(ID:admin2),15個銀行客戶(ID:銀行)和2個房地產客戶(ID:房地產)。 我已經用ID設置了自定義用戶。 沒有產品有定價。 一切都以帶有order_info的電子郵件開具發票。 一切都在房子以后支付。 因此,該網站確實依賴電子郵件。
我不是最擅長php的,以前的工作很草率。
有什么幫助嗎?
您可以在functions.php filr中如下使用wc掛鈎
add_action('woocommerce_new_order','send_email_to_admin',1,1); 函數send_email_to_admin($ order_id){//使用訂單ID查找用戶ID並發送電子郵件}
使用掛在woocommerce_thankyou
操作鈎中的自定義函數,將使您能夠基於用戶角色和自定義多個收件人來進行條件電子郵件通知。
您需要在此功能中替換管理員和超級管理員電子郵件。
您還需要檢查3個if語句中的用戶角色是否匹配……房地產ID通常不能有空格,應改為: '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(
'supadmin1@example.com', 'supadmin2@example.com' );
$admin_emails = array(
'admin1@example.com', 'admin2@example.com',
'admin3@example.com', 'admin4@example.com', 'admin5@example.com' );
// 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文件中。
經過測試和工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.