将优惠券代码名称添加到 Woocommerce 查看订单详细信息和电子邮件通知 [英] Add the Coupon Code names to Woocommerce View Order details and email notifications

查看:91
本文介绍了将优惠券代码名称添加到 Woocommerce 查看订单详细信息和电子邮件通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我注意到在查看订单详细信息和电子邮件确认中,它反映了折扣行,但没有说明实际使用的折扣代码.此外,如果折扣代码是 0.00 美元(我们有时会有 0 美元代码用于特殊跟踪目的),它甚至根本不会显示代码.我花了一整天的时间试图找到解决方案——有人可以就此提供一些指导吗?谢谢.

I noticed that in the View Order Details and email confirmations, it reflects a discount line, but doesn't state the actual Discount Code used. Furthermore, if the discount code is $0.00 (we sometimes have a $0 code for special tracking purposes), it won't even show the code at all. I spent all day trying to find a solution -- can someone give some guidance on this? Thanks.

到目前为止,我已经完成了这项工作以获取实际的优惠券代码:

I got this working so far to get the actual coupon code:

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;
 }

但不知道如何将其放入折扣"行......也不知道为什么当它是使用了 $0 代码的 $0 商品时,Discount 行甚至不出现.

But can't figure out how to get it into the 'Discount' line... nor why the Discount line doesn't even appear when it's a $0 item with a $0 code used.

推荐答案

更新 - 处理零价值折扣

以下代码将在订单总计行中的折扣"行之后,显示该订单所应用的优惠券:

The following code will after "discount" line in order totals lines, displaying the applied coupons to the order:

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;
}

在客户订单视图上显示,附有 2 张已应用的优惠券:

附加代码版本:处理应用的折扣金额为零的优惠券,请改用此代码:

Additional code version: Handle applied coupons with a zero discount amount use this instead:

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;
}

在带有 0 折扣优惠券的电子邮件通知中显示:

代码位于活动子主题(或活动主题)的 function.php 文件中.经测试有效.

Code goes in function.php file of your active child theme (or active theme). Tested and works.

这篇关于将优惠券代码名称添加到 Woocommerce 查看订单详细信息和电子邮件通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆