Agregue los nombres de los códigos de cupón a Woocommerce Ver detalles del pedido y notificaciones por correo electrónico

4 minutos de lectura

avatar de usuario
usuario2337231

Noté que en Ver detalles del pedido y confirmaciones por correo electrónico, refleja una línea de descuento, pero no indica el Código de descuento real utilizado. Además, si el código de descuento es de $0,00 (a veces tenemos un código de $0 para fines especiales de seguimiento), ni siquiera mostrará el código. Pasé todo el día tratando de encontrar una solución. ¿Alguien puede darme alguna orientación sobre esto? Gracias.

Tengo esto funcionando hasta ahora para obtener el código de cupón real:

add_action( 'woocommerce_order_details_after_order_table', 'custom_woocommerce_coupon_line' );
function custom_woocommerce_coupon_line( $order_id ) {
    $order    = wc_get_order( $order_id );

    // An order can have no used coupons or also many used coupons
    $coupons  = $order->get_used_coupons();
    $coupons  = count($coupons) > 0 ? implode(',', $coupons) : '';
    echo $coupons;
 }

Pero no puedo entender cómo ponerlo en la línea de ‘Descuento’… ni por qué la línea de Descuento ni siquiera aparece cuando se trata de un artículo de $0 con un código de $0 usado.

avatar de usuario
LoicTheAztec

ActualizadoManejo de descuentos con valor cero

El siguiente código aparecerá después de la línea de “descuento” en las líneas de totales del pedido, mostrando los cupones aplicados al pedido:

add_filter( 'woocommerce_get_order_item_totals', 'add_coupons_codes_line_to_order_totals_lines', 10, 3 );
function add_coupons_codes_line_to_order_totals_lines( $total_rows, $order, $tax_display ) {
    // Exit if there is no coupons applied
    if( sizeof( $order->get_used_coupons() ) == 0 )
        return $total_rows;

    $new_total_rows = []; // Initializing

    foreach($total_rows as $key => $total ){
        $new_total_rows[$key] = $total;

        if( $key == 'discount' ){
            // Get applied coupons
            $applied_coupons = $order->get_used_coupons();
            // Insert applied coupon codes in total lines after discount line
            $new_total_rows['coupon_codes'] = array(
                'label' => __('Applied coupons:', 'woocommerce'),
                'value' => implode( ', ', $applied_coupons ),
            );
        }
    }

    return $new_total_rows;
}

Mostrar en la vista de pedido del cliente, con 2 cupones aplicados:

ingrese la descripción de la imagen aquí


Versión de código adicional: Maneje los cupones aplicados con un monto de descuento cero, use esto en su lugar:

add_filter( 'woocommerce_get_order_item_totals', 'add_coupons_codes_line_to_order_totals_lines', 10, 3 );
function add_coupons_codes_line_to_order_totals_lines( $total_rows, $order, $tax_display ) {
    $has_used_coupons = sizeof( $order->get_used_coupons() ) > 0 ? true : false;

    // Exit if there is no coupons applied
    if( ! $has_used_coupons )
        return $total_rows;

    $new_total_rows  = []; // Initializing
    $applied_coupons = $order->get_used_coupons(); // Get applied coupons

    foreach($total_rows as $key => $total ){
        $new_total_rows[$key] = $total;

        // Adding the discount line for orders with applied coupons and zero discount amount
        if( ! isset($total_rows['discount']) && $key === 'shipping' ) {
            $new_total_rows['discount'] = array(
                'label' => __( 'Discount:', 'woocommerce' ),
                'value'    => wc_price(0),
            );
        }

        // Adding applied coupon codes line
        if( $key === 'discount' || isset($new_total_rows['discount']) ){
            // Get applied coupons
            $applied_coupons = $order->get_used_coupons();
            // Insert applied coupon codes in total lines after discount line
            $new_total_rows['coupon_codes'] = array(
                'label' => __('Applied coupons:', 'woocommerce'),
                'value' => implode( ', ', $applied_coupons ),
            );
        }
    }

    return $new_total_rows;
}

Mostrar en notificaciones por correo electrónico con un cupón que tiene 0 descuento:

ingrese la descripción de la imagen aquí


El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.

  • ¡Esto funciona! Usted es maravilloso. Encontré muchas soluciones para mi proyecto basadas en sus respuestas y usted ha sido mi salvador incluso sin comprometerse conmigo 🙂 Desafortunadamente, esto todavía no muestra el código de cupón utilizado para el escenario de cupón de artículo de $ 0.00 + cupón de $ 0 (hackeamos juntos la capacidad para clientes para canjear un artículo gratis pero con un cupón requerido), pero está bien. Decidí usar mi código anterior para mostrar una línea separada para estos tipos especiales de códigos. ¿Este código que enviaste también funcionará para confirmaciones de pedidos si lo adapté al filtro woocommerce_email_order_items_table?

    – usuario2337231

    7 febrero 2019 a las 23:51


  • @ user2337231 Acabo de actualizar el código para manejar la visualización del código de cupones incluso cuando el monto del descuento es igual a cero. El código maneja también las notificaciones por correo electrónico donde también se muestran los códigos de cupón.

    – LoicTheAztec

    7 febrero 2019 a las 23:59


  • Hmmm… todavía no parece funcionar… ¿quizás se deba a que el artículo cuesta $0,00 o podría estar en conflicto con otro filtro? Captura de pantalla: Enlace

    – usuario2337231

    8 de febrero de 2019 a las 0:04

  • Hmmm debe haber un conflicto con otra pieza de código en las funciones…. no importa, puedo usar la solución alternativa para el escenario de $0 artículo + $0 código, ya has sido muy útil. Última pregunta si no estoy siendo demasiado molesto: ¿podría aplicar su solución directamente a la acción “woocommerce_email_order_items_table”?

    – usuario2337231

    8 de febrero de 2019 a las 0:14

  • @user2337231 He vuelto a actualizar el código… He añadido una versión de código especial para ti… Pruébalo, debería funcionar.

    – LoicTheAztec

    8 de febrero de 2019 a las 0:49

¿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