在Woocommerce电子邮件通知中将产品名称替换为SKU

时间:2019-04-29 07:47:48

标签: php wordpress woocommerce orders email-notifications

当收到确认电子邮件和/或发票电子邮件时,我希望客户在订单详细信息上看到SKU而不是产品名称。

我尝试了下面的代码,但是在产品名称下的括号之间显示了SKU。

function sww_add_sku_woocommerce_emails( $output, $order ) {

    static $run = 0;

    if ( $run ) {
        return $output;
    }

    $args = array(
                'show_sku'      => true,
    );

    $run++;

    return $order->email_order_items_table( $args );
}

add_filter( 'woocommerce_email_order_items_table', 'sww_add_sku_woocommerce_emails', 10, 2 );

但是,我希望SKU完全替换产品名称,并且不要出现在括号之间,如果可能的话,可以通过Product SKU [SKU代码]更改文本。

在电子邮件通知中用SKU替换产品名称的正确代码是什么?

1 个答案:

答案 0 :(得分:1)

注意::过滤器挂钩woocommerce_order_item_name也用于emails/email-order-items.php模板文件(有关电子邮件通知)

似乎您想在任何地方都用SKU替换产品名称,因此您只需要使用the same answer code to one of your previous questions,并添加一些内容即可。

因此,您的代码将类似于(对于订单电子邮件通知)

add_filter( 'woocommerce_order_item_name', 'display_sku_in_order_item', 20, 3 );
function display_sku_in_order_item( $item_name, $item, $is_visible ) {
    $product   = $item->get_product(); 

    if( $sku = $product->get_sku() ) {
        // On front end orders
        if( is_wc_endpoint_url() ) {
            $item_name = '<a href="'. $product->get_permalink() .'" class="product-sku">'. __( "Product ", "woocommerce") . $sku .'</a>';
        }
        // On email notifications
        else {
            $item_name = $sku;
        }
    }
    return $item_name;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

参考:Search woocommerce_order_item_name filter hook locations