php - textos - woocommerce email
Notificaciones por correo electrónico de WooCommerce: destinatario de correo electrónico diferente para diferentes ciudades (1)
Utilizo Woocommerce y, de hecho, recibo notificaciones de pedidos solo para un correo electrónico. Me gustaría recibir notificaciones sobre pedidos en 2 correos electrónicos diferentes según la ubicación del cliente:
- Para el cliente de la zona 1 (Alemania), me gustaría recibir las notificaciones por correo electrónico en
Mail #1 ([email protected])
, - Para todas las demás zonas, como la zona 2 (México), me gustaría recibir las notificaciones por correo electrónico en
Mail #2 ([email protected])
.
Estaba buscando algunas funciones en la red, pero solo encontré funtcions para enviar a dos direcciones de correo electrónico, pero sin ninguna condición If.
Lo que necesitaré es algo como eso:
if ($user->city == ''Germany'') $email->send(''[email protected]'')
else $email->send(''[email protected]'')
¿Qué gancho puedo usar para que funcione?
Gracias.
Puede utilizar una función personalizada enganchada en el gancho del woocommerce_email_recipient_{$this->id}
, dirigiendo la notificación por correo electrónico a ''Nuevo pedido'' , de esta manera:
add_filter( ''woocommerce_email_recipient_new_order'', ''diff_recipients_email_notifications'', 10, 2 );
function diff_recipients_email_notifications( $recipient, $order ) {
// 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;
}
Para la próxima versión 2.7 de WooCommerce, algunos métodos nuevos estarán disponibles en la clase WC_Abstract_Order en relación con el país de facturación y el país de envío, pero el código real en esa función seguirá siendo compatible. Estos nuevos métodos son respectivamente
get_billing_country()
yget_shipping_country()
...
Uso con el objeto instancia de $ order :
$order->get_billing_country(); // instead of $order->billing_country; $order->get_shipping_country(); // instead of $order->shipping_country;
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
El código está probado y funciona.
Respuestas relacionadas: