在 Woocommerce 中,我希望根据所选的送货方式 ID 将新订单电子邮件发送给特定人员。
目前,我只能将每个电子邮件地址添加到新订单电子邮件中,但最终希望根据客户选择的送货方式 ID 将电子邮件发送到一个特定的电子邮件。
这是我的代码来自这个答案,适用于邮政编码:
add_filter( 'new_order' , 'so_26429482_add_recipient', 20, 2 );
function so_26429482_add_recipient( $email, $order ) {
$additional_email = "[email protected]";
if( $order->shipping_postcode == "90210" ){
$email = explode( ',', $email );
array_push( $email, $additional_email );
}
return $email;
}
相反,我应该需要定位送货方式 Id。
我的两种运输方式 ID 是
flat_rate:8
和 flat_rate:9
。
有人知道该怎么做吗?
更新 2 - 您的代码已过时,因为
new_order
钩子不再存在 (仍然适用于 WooCommerce 版本 8+)
无法删除新订单电子邮件通知中设置的默认电子邮件。但我们可以根据订单运送方式 ID 有条件地将其他电子邮件收件人添加到新订单电子邮件通知中:
add_filter( 'woocommerce_email_recipient_new_order', 'new_order_additional_recipients', 20, 2 );
function new_order_additional_recipients( $recipient, $order ) {
if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;
// Set Below your email adresses
$email1 = '[email protected]';
$email2 = '[email protected]';
// Get the shipping method Id
$shipping_items = $order->get_items('shipping');
$shipping_item = reset($shipping_items);
$shipping_method_id = $shipping_item->get_method_id() . ':';
$shipping_method_id .= $shipping_item->get_instance_id();
// Adding recipients conditionally
if ( 'flat_rate:8' == $shipping_method_id )
$recipient .= ',' . $email1;
elseif ( 'flat_rate:9' == $shipping_method_id )
$recipient .= ',' . $email2;
return $recipient;
}
代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。