You need to enable JavaScript to run this app. WooCommerce订单页及邮件展示变体描述时数量位置异常修复咨询
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce订单页及邮件展示变体描述时数量位置异常修复咨询

WooCommerce 订单确认页/通知邮件变体描述位置修复方案

问题原因

你当前代码的错误来自两点:

  1. 高版本WooCommerce中woocommerce_order_item_name过滤器的第三个参数不是商品数量$qty,而是代表商品是否可见的布尔值$is_visible,你误将该参数当作数量拼入返回值,才会出现多余数字、位置错乱的问题
  2. WooCommerce默认会在该过滤器返回商品名之后,单独输出商品数量,你完全不需要手动拼接数量,否则会打乱原有默认的名称+数量排版

修复后代码

add_filter( 'woocommerce_order_item_name', 'display_product_title_with_variation_desc', 10, 3 );
function display_product_title_with_variation_desc( $item_name, $item, $is_visible ) {
    // 用官方推荐方法获取商品对象,兼容高版本WooCommerce
    $_product = wc_get_product( $item['variation_id'] ? $item['variation_id'] : $item['product_id'] );
    if ( ! $_product ) return $item_name;

    // 商品可见时才添加详情页链接,和原生逻辑保持一致
    if ( $is_visible ) {
        $link = get_permalink( $_product->get_id() );
        $item_name = '<a href="'. esc_url( $link ) .'" rel="nofollow">'. $item_name .'</a>';
    }

    $_var_description = '';
    if ( $item['variation_id'] ) {
        $_var_description = $_product->get_variation_description();
        if ( $_var_description ) {
            // 给描述加专属样式类,方便后续自定义样式
            $_var_description = '<br><span class="order-item-variation-desc">'. wp_kses_post( $_var_description ) .'</span>';
        }
    }

    // 仅拼接商品名和变体描述,数量由WooCommerce默认输出,不改变原有位置
    return $item_name . $_var_description;
}

额外优化说明

  • 替换了已经弃用的get_product()方法,兼容WooCommerce 3.0及以上所有版本
  • 新增商品可见性判断,和WooCommerce原生逻辑对齐,避免特殊场景下的链接显示异常
  • 对链接和变体描述内容做了安全转义,规避XSS安全风险
  • 变体描述添加了专属样式类,你可以自行添加CSS调整字号、颜色、边距等展示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:24:03