Hola Kallookoo, efectivamente tengo X sitios por X idiomas y cada uno de esos sitios tiene un Woocommerce instalado.
Los templates del resto de los sitios se envían sin problemas. En cada sitio tengo Loco translate y he creado la traducción para el idioma en concreto y todo funciona bien excepto en el sitio en Alemán que genera correctamente el email de procesando pero no el de completado, ya que envía este último en inglés y no en Alemán (aún teniendo una traducción para ese template.)
Únicamente envía el email correctamente si cambio el idioma del WordPress a Alemán pero esto no es lo que voy buscando ya que la interfaz en alemán es un poquito difícil de entender :D. ¿Sabes si este error es normal o es que no estoy configurando algún apartado correctamente? Cualquier aportación es bienvenida 😉
Muchas gracias,
Isa.
Buenas @lujan82
Debes hacer override del archivo /woocommerce/emails/email-order-details.php y comentar donde sale
if ( $totals ) {
$i = 0;
foreach ( $totals as $total ) {
$i++; ?>
<tr>
<th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['label'] ); ?></th>
<td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['value'] ); ?></td>
</tr>
<?php }
}
Puedes simplemente eliminarlo o comentarlo con /**/ o forzar a que $totals esté = a un array() vacio.
Espero que vuelvas a cerrar el debate y comentar como lo resolviste.
Pues tienes razón, todas las variables no están disponibles para todos los correos. En la ? que hay en ese campo te informa de las variables que se pueden usar.
Se me ocurre que crees tu propia variable en un plugin. ¿Sabrías crear un plugin?
1 – Crea un archivo con el nombre que quieras y subelo a la carpeta plugins. Por ejemplo, variables.php
2 – El contenido del archivo es el siguente:
<?php
/*
Plugin Name: Plugin de funciones varias
Plugin URI: http://midominio.com
Description: Plugin de funciones varias
Author: Yo Mismo
Version: 1.0
Author URI: http://midominio.com
*/
/*
* Nuevas variables a las plantillas de correo
*/
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;
// Additional wanted placeholders in the array of find / relace pairs
$additional_placeholders = array(
'{cliente}' => $order->get_formatted_billing_full_name(),
);
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}
Después usas {cliente} en el asunto del correo que quieras.
La idea está sacada de stackoverflow
https://stackoverflow.com/questions/50120643/create-additional-variables-placeholders-for-woocommerce-email-notifications-sub
Hi Jaime, thanks for your response and your effort translating my messages
We can talk in english, no problem
This is the scenary:
I have a marketplace and my vendors do not received the email´s orders when a client make a purchase. I receive the order as a general admin of the site
I´m running with Woocommerce + WC Vendors (not the pro version). Also, I´m exploring the WC Vendors Pro 7 days demo and I have the same issue
When I go to Woocommerce>Settings>Emails and I try to configure the «Vendors Notify Order» section and I click on -Manage- there is no option to enable the Recipent(s)
So I cannot change the -Recipent(s) «status» to Vendors like -Customer- appears in Orders on hold/Processing orders, etc. I guess it should show -Vendors- on the list.
Do you have any light about the issue?
Thank you so much,
Appreciate your effort with this support
Hello,
This is Jamie the Founder and lead developer of WC Vendors. Please post your question over in our support forum and I’ll be happy to help you out.
1. Orders only show for vendors if the order status is processing or complete because the vendor orders are derived from the commission table.
2. For vendor emails, please ensure that you have enabled the correct vendor notify emails under WooCommerce > Settings > Emails > Vendor Notify order.
Also ensure that your other emails are working by installing a mail log plugin. This will tell you if all emails are firing as they should.
If you have any other issues, please let me know over on our official support forum and I’ll be happy to help!
cheers,
Jamie.
Founder WC Vendors.
Prueba añadir donde quieras {customer_name}
Aquí tienes todas las variables que se pueden usar por si las necesitas
https://docs.woocommerce.com/document/automated-follow-up-emails-docs/email-variables-and-merge-tags/
-
Esta respuesta fue modificada hace 4 años, 6 meses por LGrusin.
El problema es que hay que volver a leer los productos para sacar la descripción corta. Prueba esto, ponlo al final del archivo admin-new-order.php antes de
do_action( 'woocommerce_email_footer', $email );
o en el sitio que prefieras.
$cart = WC()->cart->get_cart();
foreach( $cart as $cart_item ){
$product = wc_get_product( $cart_item['product_id'] );
?>
<div itemprop="description">
<?php echo '<p>'.$product->get_name() .' - '; ?>
<?php if ( !empty( $product->get_short_description()) ) {
echo $product->get_short_description();
}
echo '</p>'; ?>
</div>
<?php
}
Solo funciona con la descripción corta, si no hay, se muestra el nombre del producto nada más. Es poco ortodoxo pero funciona.
Iniciador del debate
kike0128
(@kike0128)
Hola Jose64
Lo primero es darte las gracias por tu respuesta.
El problema es que los 600 sociso se fueron haciendo a lo largo de unos años y no les pedian el correo electronico, (se hacia con un formulario de papel) de los 600 socios, hay uns 350 que no se disppone de su email.
Ya se que es un atraso, pero es lo que hcieron en su momento, lo único que disponen es de sus nombres, y sus numeros de cuenta para pasar el cargo anual de las cuotas.
Por eso la idea de hacerlo con cupones abiertos, es decir el socio pondria su nombre completo en el cupon, que previamente se habria introducido con su nombre y apellidos sin más, sin fecha de caducidad.
Lo he probado con uno y funciona bien, el problema es como presentar los dos precios en el producto.
Instale el Booster for WooCommerce que en principio esto de presentar dos precios segun los roles, lo tendria que hacer, pero no lo consigo.
Si tienen que acceder a una cuenta para ver el precio especial de ellos, pues lo veo dificil para esta gente.
El problema también está en que es un público bastante mayor y nulos en tecnologias y hacerles crear cuentas con passwords, etc, les resulta muy complejo.
esto que me planteas
¿no te sería más sencillo crear 850 usuarios únicamente con su nombre y correo y que los socios completen sus datos (incluido el password)? estaria bien, pero lo que se necesita es que se vean los dos precios sin tener que entrar en cuentas registradas-
Esto para mayoristas, distribuidores,clientes finales esta bien, pero para este tipo de usuario es demasiado.
Necesitamos algo facil por el tipo de usuario
Ya me esta costando lo suyo convencerlos de poner cobro por tarjeta de credito.
El plugin permite presentar dos precios en el producto?
Ya me dirás
Gracias de nuevo
ENrique
Iniciador del debate
vilm
(@vilm)
Buenas tardes,
No sé el código que necesito poner en la plantilla del email de nuevo pedido al administrador, para que en el mail al administrador sobre el nuevo pedido le aparezca la descripción corta del producto.
Me refiero a la plantilla: wp-content/plugins/woocommerce/templates/emails/admin-new-order-php.
¿Sabéis que código puedo usar para conseguir esto?
Muchas gracias,
Iniciador del debate
Jordi
(@kukat)
Disculpa el retraso, aún no lo había podido probar. Y efectivamente!!! Funcionó. Resumiendo:
1. Copiar fichero de plugins/woocommerce/emails/email-order-items.php
a tutema/woocommerce/emails/email-order-items.php
2. Buscar esta línea:
echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );
3. Comentarla con //
4. Añadir estas líneas.
$product = $item->get_product();
echo wp_kses_post($product->get_description());
Por cierto, puedes explicar más detalladamente estas dos últimas líneas? Llamas al objeto producto y guardas en la variable $producto, y luego simplemente le dices a ese objecto que te muestre la descripción, no?
-
Esta respuesta fue modificada hace 4 años, 7 meses por Jordi.
Hola @hawhman
No hay plugin disponible para algo tan específico. Debes utilizar el hook de wc_change_admin_new_order_email_recipient
function wc_change_admin_new_order_email_recipient( $recipient, $order ) {
$shipping_postcode = $order->get_billing_postcode();
$array_postcodes = array('00000','00001','00002');
if(in_array($shipping_postcode,$array_postcodes)){
$recipient = "otroemail@gmail.com";
}
return $recipient;
}
add_filter('woocommerce_email_recipient_new_order', 'wc_change_admin_new_order_email_recipient', 1, 2);
Deberás cambiar los postcodes disponibles para realizar el cambio y el recipient a cambiar. En caso de que el postcode no esté en el array lo enviará al email por defecto.
Espero que puedas resolverlo con esto.
Buenas, Tienes dos manera de hacerlo
1. Hacer override del fichero email-order-items.php
Para hacerlo debes copiar este fichero del plugin woocommerce a tu tema.
(más información en https://docs.woocommerce.com/document/template-structure/)
Entonces puedes editar la linea que pone:
echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );
2. Como esta hecho con un filtro. También puedes crear un filtro para eso.
En tu functions.php pon:
add_filter('woocommerce_order_item_name','change_name_on_order_item_name');
function change_name_on_order_item_name($name, $item, false){
$product = $item->get_product();
return $product->get_description();
}
No he probado el código, pero para que puedes investigar más las propiedades de $item te dejo dos links:
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html
https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html
El segundo método es mucho más limpio, pero con los dos puedes conseguir lo que necesitas.Espero que lo consigas.
Buenas Pepe,
Después de revisar un poco resulta que es una funcionalidad que WordPress trae por defecto pero en el regitro de WooCommerce que es el que tu tienes no lo hace. (si no prueba en crear un nuevo usuario con el registro normal y lo verás)
Perdona pero pensaba que funcionaban igual. Lo único que puedes hacer es utilizar el siguinete código que te enviará en copia oculta el mismo email que al cliente.
add_filter( 'woocommerce_email_headers', 'customer_new_account_admin_notification', 20, 3 );
function customer_new_account_admin_notification( $header, $email_id, $order ) {
if( 'customer_new_account' == $email_id ) {
// Get admin email
$admin_email = get_option('admin_email');
// Set the email as BCC
$header .= 'Bcc: ' . $admin_email . "\r\n";
}
return $header;
}
Espero que con esto ya hayamos podido resolver tu consulta.
-
Esta respuesta fue modificada hace 4 años, 7 meses por Adrián de Grafreak. Razón: Corrección en el código