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
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
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
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
Lo he puesto en functions.php, pero no pasa nada de nada 🙁 🙁
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:
Saludos.
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
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.
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:
entonces aunque he intentado de varias formas no logro que coja los precios 🙁
En verdad :ohmy: ? tengo la 3.5.1, y me podeis decir lo que has hecho, a mi no me funciona
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
Lo hice, pero los datos del precio unitario me aparecen fuera de la tabla, antes del encabezado
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.