WooCommerce email notifications: different email recipient for different cities

前端 未结 1 1210
粉色の甜心
粉色の甜心 2020-12-10 21:13

I using Woocommerce and actually I receive order notifications only to one email. I would like to receive notifications about orders in 2 different emails depending on custo

相关标签:
1条回答
  • 2020-12-10 21:52

    You can use a custom function hooked in woocommerce_email_recipient_{$this->id} filter hook, targeting 'New Order' email notification, this way:

    add_filter( 'woocommerce_email_recipient_new_order', 'diff_recipients_email_notifications', 10, 2 );
    function diff_recipients_email_notifications( $recipient, $order ) {
        if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;
    
        // Set HERE your email adresses
        $email_zone1 = 'name1@domain.com';
        $email_zone_others = 'name2@domain.com';
    
        // Set here your targeted country code for Zone 1
        $country_zone1 = 'GE'; // Germany country code here
    
        // User Country (We get the billing country if shipping country is not available)
        $user_country = $order->shipping_country;
        if(empty($user_shipping_country))
            $user_country = $order->billing_country;
    
        // Conditionaly send additional email based on billing customer city
        if ( $country_zone1 == $user_country )
            $recipient = $email_zone1;
        else
            $recipient = $email_zone_others;
    
        return $recipient;
    }
    

    For WooCommerce 3+, some new methods are required and available from WC_Order class concerning billing country and shipping country: get_billing_country() and get_shipping_country()
    Usage with $order instance object:

    $order->get_billing_country(); // instead of $order->billing_country;
    $order->get_shipping_country(); // instead of $order->shipping_country;
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    Code is tested and works.


    Related answers:

    • How to get order ID in woocommerce_email_headers hook
    • Send on-hold order status email notification to admin
    0 讨论(0)
提交回复
热议问题