You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除WooCommerce邮件通知中订单详情的商品SKU

移除WooCommerce邮件通知中商品标题后的SKU

你的代码之所以没用,是因为它只针对前端商品详情页的SKU显示控制,和邮件通知完全不搭边。要去掉邮件里的SKU,得用专门针对订单/邮件商品名称的钩子,或者修改邮件模板,下面是两种可行方案:

方案一:用过滤器钩子(推荐,无需修改模板)

添加以下代码到主题的functions.php文件里,或者用自定义代码插件:

function remove_sku_from_email_order_item_name( $item_name, $item ) {
    // 仅在邮件环境生效,排除后台和前端订单详情页
    if ( ! is_wc_endpoint_url() && ! is_admin() ) {
        $product = $item->get_product();
        if ( $product && $product->get_sku() ) {
            // 匹配邮件里SKU的格式,默认是"(SKU编码)",如果你的格式不同请调整
            $sku_suffix = ' (' . $product->get_sku() . ')';
            $item_name = str_replace( $sku_suffix, '', $item_name );
        }
    }
    return $item_name;
}
add_filter( 'woocommerce_order_item_name', 'remove_sku_from_email_order_item_name', 10, 2 );

这个钩子会拦截订单商品名称的输出,判断当前是邮件场景后,自动去掉SKU后缀。如果你的邮件里SKU不是用括号包裹,比如是[SKU123],就把$sku_suffix改成对应的格式就行。

方案二:修改邮件模板(适合钩子失效的情况)

如果上面的钩子没用,可能是主题或其他插件改写了邮件模板,这时候可以直接修改模板文件:

  1. 找到WooCommerce插件目录下的模板:wp-content/plugins/woocommerce/templates/emails/email-order-items.php
  2. 把这个文件复制到你的主题目录下:wp-content/themes/你的主题名/woocommerce/emails/(没有对应文件夹就新建)
  3. 打开复制后的email-order-items.php,找到类似下面的代码段:
echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );
if ( $show_sku && $product->get_sku() ) {
    echo wp_kses_post( ' (#' . $product->get_sku() . ')' );
}
  1. 删掉SKU相关的代码,也就是去掉if ( $show_sku && $product->get_sku() ) { ... }这段,保存即可。

注意:修改模板后,后续WooCommerce更新不会覆盖你主题里的模板,但如果官方模板有大改动,你可能需要同步更新自己的模板。

内容的提问来源于stack exchange,提问作者udd_ish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:16:00