Avisos
Vaciar todo

precio unitario en mails de woocommerce

22 Respuestas
3 Usuarios
0 Reactions
138 Visitas
Respuestas: 78
Trusted Member
Topic starter
 

Hola
Les escribo porque hace un par de años tuve un problema con los emails que envía woocommerce al realizar la compra y ustedes me ayudaros a resolverlo.
Bueno hoy tras la actualización de woocommerce el código ha quedado obsoleto y no logro adaptarlo para que me envíe los precios unitarios en el mail, sabéis como se puede hacer esto¿? siguiendo el nuevo lenguaje de las plantillas, que el antiguo no va.
De antemano muchas gracias
Daniela

URL del sitio: Contenido solo visible a usuarios registrados


 
Respondido : 18/06/2019 3:38 pm
Pepe
 Pepe
Respuestas: 41113
Illustrious Member Admin
 

Hola Daniel.

Revisa si añadiendo estas dos funciones al archivo Functions.php se muestra el precio unitario:

/**
 * Filter the document table headers to add product unit price.
 *
 * @param string[] $headers table column headers
 * @param int $order_id the order ID for the document
 * @param string $document_type the current document type
 * @return string[] updated table headers
 */
function sv_wc_pip_invoice_add_unit_price_column( $headers, $order_id, $document_type ) {
	if ( 'invoice' === $document_type ) {
		$new_headers = array();
		foreach ( $headers as $key => $header ) {
			if ( 'quantity' === $key ) {
				$new_headers['unit_price'] = __( 'Unit price', 'textdomain' );
			}
			$new_headers[ $key ] = $header;
		}
		$headers = $new_headers;
	}
	return $headers;
}
add_filter( 'wc_pip_document_table_headers', 'sv_wc_pip_invoice_add_unit_price_column', 10, 3 );
/**
 * Filter the document table row cells to add product unit price.
 *
 * @param string[] $cells the current table row cells
 * @param string $type WC_PIP_Document type
 * @param int $item_id item id
 * @param string[] $item item data
 * @param WC_Product $product product object
 * @return string[] updated row cells
 */
function sv_wc_pip_document_invoice_add_unit_price_cell( $cells, $document_type, $item_id, $item, $product ) {
	if ( 'invoice' === $document_type ) {
		$new_cells = array();
		foreach ( $cells as $key => $cell ) {
			if ( 'quantity' === $key ) {
				$new_cells['unit_price'] = wc_price( $product->get_price() );
			}
			$new_cells[ $key ] = $cell;
		}
		$cells = $new_cells;
	}
	return $cells;
}
add_filter( 'wc_pip_document_table_row_cells', 'sv_wc_pip_document_invoice_add_unit_price_cell', 10, 5 );

Nota: Recuerda realizar una copia del archivo antes de la modificación para tener el original.

Un saludo


 
Respondido : 18/06/2019 4:15 pm
Respuestas: 78
Trusted Member
Topic starter
 

Pero esto es del tema? mm no se puede poner algo en los mails de woocommerce como el anterior? sólo lo necesito para los emails de compra.
Muchas gracias
D


 
Respondido : 18/06/2019 4:30 pm
Pepe
 Pepe
Respuestas: 41113
Illustrious Member Admin
 

Hola Daniela.

Lo que hacen las funciones que te pase es exactamente lo mismo que si el código que añadiste en los archivos, hay que modificar archivo para que se muestre, lo que en este caso en vez de realizarlo en los archivos del plugin lo realizamos es de las funciones de Wordpress.

Prueba lo siguiente:
.- Accede wp_content -> themes -> tu_plantilla -> woocommerce
.- Renombra la carpeta emails por ejemplo emails_old

Revisa si se muestra.

Si ves que se muestra copia la carpeta emails de wp-content -> plugins -> woocommerce -> emails, a la carpeta wp_content -> themes -> tu_plantilla -> woocommerce

Un saludo


 
Respondido : 18/06/2019 4:54 pm
Respuestas: 78
Trusted Member
Topic starter
 

Lo he puesto en functions.php, pero no pasa nada de nada 🙁 🙁


 
Respondido : 18/06/2019 5:26 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

Comenta o elimina el código del archivo functions.php que agregaste y prueba hacerlo reemplazando los archivos, tal como se discute en el siguiente hilo:

https://www.webempresa.com/foro/26-Plugins-WordPress/149575-Como-puedo-recibir-los-precios-unitarios-por-woocommerce.html

Saludos.


 
Respondido : 18/06/2019 5:53 pm
Respuestas: 78
Trusted Member
Topic starter
 

Si te fijas ese hilo es mío y fue hace un par de añitos, como puse al inicio ya no van porque utilizan otras variables que no he sabido como modificar.
Gracias


 
Respondido : 18/06/2019 5:59 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

Prueba hacerlo tal como se comenta en este artículo, igualmente con archivos, que según veo en los comentarios aún sigue siendo válido esta año 2019 https://nicola.blog/2015/09/08/print-unit-price-emails/

Saludos.


 
Respondido : 18/06/2019 6:38 pm
Respuestas: 78
Trusted Member
Topic starter
 

este ejemplo también es de los antiguos, te explico por que en los antiguos la tabla y la clase están dentro del archivo email-order-items.php, de esta manera
"

<td class="td" style="text-align:; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
get_item_total( $item, false, true ), array( 'currency' => $order->get_order_currency() ) ); ?>

<td class="td" style="text-align:; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
get_quantity(), $item ) ); ?>

<td class="td" style="text-align:; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
get_formatted_line_subtotal( $item ) ); ?>

"

y ahora es: get_quantity(), $item ) ); ?> get_formatted_line_subtotal( $item ) ); ?>

entonces aunque he intentado de varias formas no logro que coja los precios 🙁


 
Respondido : 18/06/2019 7:02 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

He probado en WooCommerce 3.5.7 y si funciona la sobreescritura de archivos, (ver imagen adjunta) qué versión de WooCommerce tienes?

Saludos.


 
Respondido : 18/06/2019 10:24 pm
Respuestas: 78
Trusted Member
Topic starter
 

En verdad :ohmy: ? tengo la 3.5.1, y me podeis decir lo que has hecho, a mi no me funciona


 
Respondido : 19/06/2019 11:03 am
Pepe
 Pepe
Respuestas: 41113
Illustrious Member Admin
 

Hola Daniela.

Desde la version 3x de woocommerce esta implementada esa opcion, lo que tienes qu erevisar es lo qu ete comente en la anterior respuesta.

.- Accede a wp-content -> themes -> tu_plantilla -> carpeta woocommerce
.- revisa si dentro de esa carpeta tienes otra con el nombre email, si esta la renombra por ejemplo a email_old

revisa si después de eso se muestra la columna.

Un saludo


 
Respondido : 19/06/2019 11:29 am
Respuestas: 78
Trusted Member
Topic starter
 

Lo hice, pero los datos del precio unitario me aparecen fuera de la tabla, antes del encabezado


 
Respondido : 19/06/2019 9:16 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

Envía una captura de pantalla para ver como te aparecen y qué código has implementado, puedes enviar los archivos que has modificado, adjuntados en .zip

Saludos.


 
Respondido : 19/06/2019 9:31 pm
Respuestas: 78
Trusted Member
Topic starter
 

Aqui van los adjuntos son los mismos que la página que me has dicho


 
Respondido : 20/06/2019 9:29 am
Página 1 / 2