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

如何在WooCommerce购物车页按属性名展示商品规格?

WooCommerce购物车页商品名称与规格换行显示解决方案

要实现购物车页商品名称和尺码换行展示(<p>Breeze Jersey</p><p>Size: L</p>),可以通过修改woocommerce_cart_item_name过滤器的输出逻辑来实现,具体步骤如下:

1. 添加自定义过滤器函数

在主题的functions.php文件或自定义插件中添加以下代码,覆盖默认的购物车项名称输出:

add_filter( 'woocommerce_cart_item_name', 'custom_cart_item_name_with_size', 10, 3 );
function custom_cart_item_name_with_size( $default_output, $cart_item, $cart_item_key ) {
    $_product = $cart_item['data'];
    $product_link = $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '';

    // 构建带链接的产品名称
    $product_name = ! empty( $product_link ) 
        ? sprintf( '<a href="%s">%s</a>', esc_url( $product_link ), $_product->get_name() )
        : $_product->get_name();

    // 提取尺码属性
    $size_html = '';
    // 处理可变产品的尺码
    if ( $_product->is_type( 'variation' ) ) {
        foreach ( $_product->get_variation_attributes() as $attr_key => $attr_value ) {
            $attr_label = wc_attribute_label( str_replace( 'attribute_', '', $attr_key ) );
            if ( strtolower( $attr_label ) === 'size' ) {
                $size_html = sprintf( '<p>%s: %s</p>', $attr_label, $attr_value );
                break;
            }
        }
    }
    // 处理简单产品的自定义尺码属性
    else {
        $size_value = $_product->get_attribute( 'Size' );
        if ( ! empty( $size_value ) ) {
            $size_html = sprintf( '<p>Size: %s</p>', $size_value );
        }
    }

    // 组合最终输出结构
    return wp_kses_post( sprintf( '<p>%s</p>%s', $product_name, $size_html ) );
}

2. 简化购物车模板中的调用

原来的输出代码可以简化为直接调用过滤器(无需手动拼接HTML):

echo apply_filters( 'woocommerce_cart_item_name', '', $cart_item, $cart_item_key );

或者保留默认的WooCommerce购物车项名称调用逻辑,过滤器会自动修改输出结果。

为什么wc_display_item_meta在购物车页不生效?

wc_display_item_meta()函数是专门为**订单项(WC_Order_Item对象)**设计的,它读取的是订单存储的元数据;而购物车项是WC_Cart_Item对象,数据结构和存储方式与订单项不同,因此无法直接复用该函数。我们需要从购物车关联的产品对象(WC_Product)中直接提取属性信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:50:25