Reorganizar los totales de los detalles de los pedidos en las notificaciones por correo electrónico de WooCommerce

1 minuto de lectura

avatar de usuario
seb g

Estoy personalizando la plantilla de correo electrónico del pedido en WooCommerce y necesito hacer “Envío” en segundo lugar en los detalles del pedido, justo encima de “total”.

ingrese la descripción de la imagen aquí

Sé que el ciclo para esto está en la línea 52 en la página “email-order-details.php” de woocommerce>templates>emails, así que configúralo en mi tema secundario, pero no estoy seguro de adónde ir desde allí. Esto es lo que estoy intentando:

if ( $totals = $order->get_order_item_totals() ) {
                $i = 0;
                foreach ( $totals as $total ) {
                    $i++;
                    if($total['label'] === "Shipping"){
                        //make second-last above total somehow
                    }
                    else{
                        ?><tr>
                        <th class="td" scope="row" colspan="3" style="text-align:<?php echo $text_align; ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo $total['label']; ?></th>
                        <td class="td" style="text-align:left; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>" colspan="1"><?php echo $total['value']; ?></td>
                        </tr><?php
                    }
                }
            }

Usando una función personalizada enganchada woocommerce_get_order_item_totals gancho de filtro, permitirá reordenar los totales de los artículos como se esperaba:

add_filter( 'woocommerce_get_order_item_totals', 'reordering_order_item_totals', 10, 3 );
function reordering_order_item_totals( $total_rows, $order, $tax_display ){
    // 1. saving the values of items totals to be reordered
    $shipping = $total_rows['shipping'];
    $order_total = $total_rows['order_total'];

    // 2. remove items totals to be reordered
    unset($total_rows['shipping']);
    unset($total_rows['order_total']);

    // 3 Reinsert removed items totals in the right order
    $total_rows['shipping'] = $shipping;
    $total_rows['order_total'] = $order_total;

    return $total_rows;
}

El código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.

Probado y funciona.

ingrese la descripción de la imagen aquí

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad