簡體   English   中英

在不同的收件人上有條件的自定義新訂單Woocommerce電子郵件通知

[英]Conditional custom New Order Woocommerce email notification on different recippients

好的,我有一個似乎不是不可能的問題,但是正確設置條件對我來說是個問題。 這是正在發生的事情,也是我需要的。 我真的認為這是可能的功能。

該商店具有用戶層次結構。 有2個超級管理員(ID:admin),5個管理員(ID:admin2),15個銀行客戶(ID:銀行)和2個房地產客戶(ID:房地產)。 我已經用ID設置了自定義用戶。 沒有產品有定價。 一切都以帶有order_info的電子郵件開具發票。 一切都在房子以后支付。 因此,該網站確實依賴電子郵件。

  1. 如果15x銀行客戶下了新訂單,則這些new_order需要將電子郵件發票發送給5x管理員。
  2. 如果2x房地產客戶下了new_order,則這些new_order需要將電子郵件發票發送給5x管理員。
  3. 如果5x管理員下了一個new_order,則這些new_order需要將電子郵件發票發送給2x超級管理員。

我不是最擅長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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM