WooCommerce电子邮件通知:不同城市的不同电子邮件收件人

问题描述 投票:3回答:1

我使用Woocommerce,实际上我只收到一封电子邮件的订单通知。我希望收到有关2个不同电子邮件订单的通知,具体取决于客户所在位置:

  • 对于1区(德国)的客户,我希望收到电子邮件通知 Mail #1 ([email protected])
  • 对于区域2(墨西哥)等所有其他区域,我希望收到电子邮件通知 Mail #2 ([email protected])

我在网上寻找一些功能,但我发现只有函数发送到两个电子邮件地址,但没有任何If条件。

我需要的是这样的:

if ($user->city == 'Germany') $email->send('[email protected]')
else $email->send('[email protected]')

我可以使用哪个钩子来实现这个功能?

谢谢。

php wordpress woocommerce orders email-notifications
1个回答
4
投票

您可以使用挂钩在woocommerce_email_recipient_{$this->id}过滤器挂钩中的自定义函数,以这种方式定位“新订单”电子邮件通知:

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 = '[email protected]';
    $email_zone_others = '[email protected]';

    // 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;
}

对于WooCommerce 3+,需要一些新方法,可从WC_Order类获得有关结算国家和运输国家/地区:get_billing_country()get_shipping_country() ... 使用$ order实例对象:

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

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

代码经过测试和运行。


相关答案:

© www.soinside.com 2019 - 2024. All rights reserved.