Tienes unas variables (marcadores de posición) en cada correo para añadir al asunto. En el menú WooCommerce – Ajustes – Correos electrónicos, en el botón Gestionar de cada uno te dice las variables que puedes usar en el asunto para esos correos. Tienes la información en el signo de ? del campo Asunto. Son variables del tipo {variable}
No todos los correos permiten poner cualquier variable. Para los productos no hay ninguna. Poner todos los productos en el asunto podría ser bastante largo si se compran varios productos.
Si se me ocurre algo te lo comentaré por aquí.
-
Esta respuesta fue modificada hace 4 años, 8 meses por LGrusin.
Iniciador del debate
ele
(@luishgc93)
en este enlace : https://es.wordpress.org/support/topic/agregar-nombre-del-comprador-en-asunto-de-la-notificacion-de-nuevo-pedido/
añaden un campo personalizado en el asunto del correo, en el ejemplo añade el id del pedido, en mi caso, solo se compraria un producto asi que no ocuparia mucho, pero no se cual es el hook para sacar el nombre del producto comprado.
Prueba esto a ver si te funciona
add_filter( 'woocommerce_email_format_string' , 'filter_email_format_string', 20, 2 );
function filter_email_format_string( $string, $email ) {
// Get the instance of the WC_Order object
$order = $email->object;
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
}
// Additional wanted placeholders in the array of find / relace pairs
$additional_placeholders = array('{producto}' => $product_name, );
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}
Tendrás que poner {producto} en el asunto del correo correspondiente.
Iniciador del debate
ele
(@luishgc93)
genial gracias ! funcionó
Iniciador del debate
ele
(@luishgc93)
Una pregunta, como harías con un if para comparar que si es un producto pues salga un asunto en el correo. Y si es otro producto, pues que salga otro asunto.
El código sería diferente del anterior, no podrías usar la variable creada {producto}. Este te podría servir:
add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);
function change_admin_email_subject( $subject, $order ) {
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item['product_id'];
if ( $product_id == 87 ) {
$subject = 'Tu asunto va aqui';
} else {
$subject = 'Otro asunto';
}
return $subject;
}
}
Igual se podría hacer una combinación de los dos.
-
Esta respuesta fue modificada hace 4 años, 8 meses por LGrusin.
Iniciador del debate
ele
(@luishgc93)
genial, hice una combinación de los dos y funcionó como yo quería:
add_filter( 'woocommerce_email_format_string' , 'filter_email_format_string', 20, 2 );
function filter_email_format_string( $string, $email ) {
// Get the instance of the WC_Order object
$order = $email->object;
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item['product_id'];
if ( $product_id == 15733 ) {
$subject = '¡Bienvenida al Curso Online A!';
} elseif ( $product_id == 132 ) {
$subject = '¡Bienvenida al Curso Online de casas';
} else {
$subject = '¡Bienvenida al Curso Online de venta de coches!';
}
return $subject;
}
// Additional wanted placeholders in the array of find / relace pairs
$additional_placeholders = array('{producto}' => $subject, );
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}