WooCommerce订单页及邮件展示变体描述时数量位置异常修复咨询
WooCommerce 订单确认页/通知邮件变体描述位置修复方案
问题原因
你当前代码的错误来自两点:
- 高版本WooCommerce中
woocommerce_order_item_name过滤器的第三个参数不是商品数量$qty,而是代表商品是否可见的布尔值$is_visible,你误将该参数当作数量拼入返回值,才会出现多余数字、位置错乱的问题 - 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
相关产品推荐
相关产品推荐

