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

WooCommerce更新后WC()->cart->add_to_cart()不显示购物车自定义文本

问题根因

WooCommerce 6.0+版本对WC()->cart->add_to_cart()方法的第4个参数$variation新增了严格校验:仅键名以attribute_开头、且已提前在产品后台注册过的属性才会被自动识别、存储并展示在购物车页面,你代码中Ingredientes retirados这类自定义非属性键值现在不会被默认处理,这就是更新后文本不显示的原因。

修复步骤

1. 调整add_to_cart传参逻辑

将非属性的自定义配置数据放到方法的第5个参数$cart_item_data中传输,这个参数专门用于存储自定义购物车项目数据,不受属性规则限制:

// 先拆分属性和自定义数据
$attribute_variation = [];
$custom_cart_data = [];

if ($product_id2 != 0) {
    $attribute_variation = []; // 这里仅放实际注册过的变体属性,没有就留空
    $custom_cart_data = [
        'Base Pizza 1' => $base_pizza_principal,
        'Ingredientes retirados Pizza 1' => $ingredientes_retirados_pizza_principal,
        'Ingredientes adicionados Pizza 1' => $ingredientes_adicionados_pizza_principal, 
        'Dueto com a pizza:' => $descricao,
        'Base Pizza 2' => $base_pizza_secundaria,
        'Ingredientes retirados Pizza 2' => $ingredientes_retirados_pizza_secundaria,
        'Ingredientes adicionados Pizza 2'  => $ingredientes_adicionados_pizza_secundaria,
    ];
} else {
    $attribute_variation = [
        'attribute_Base' => $string_base_p1,
    ];
    $custom_cart_data = [
        'Ingredientes retirados' => $ingredientes_retirados_pizza1,
        'Ingredientes adicionados'  => $ingredientes_adicionados_pizza1,
    ];
}

// 调用add_to_cart时传入第5个参数
if( WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $attribute_variation, $custom_cart_data )) {
    // 原有逻辑保持不变
    if ($qtt_ingredientes_extra > 0) {
        WC()->cart->add_to_cart( $id_ingrediente_Extra, $qtt_ingredientes_extra);
    }
   
    global $woocommerce;    
    
    $cart_url = wc_get_cart_url();

    $output = array('success' => 1, 'msg' =>'Added the product to your cart ', 'cart_url' => $cart_url );
} else {
    $output = array('success' => 0, 'msg' => 'Something went wrong, please try again');
}

2. 挂载钩子保存自定义数据到购物车项目

将这段代码加到主题functions.php或自定义插件中,确保自定义数据持久化存储在购物车会话中:

add_filter('woocommerce_add_cart_item_data', function ($cart_item_data, $product_id, $variation_id) {
    // 把你传的自定义字段都存进cart_item,避免丢失
    $custom_fields = [
        'Base Pizza 1', 'Ingredientes retirados Pizza 1', 'Ingredientes adicionados Pizza 1',
        'Dueto com a pizza:', 'Base Pizza 2', 'Ingredientes retirados Pizza 2', 'Ingredientes adicionados Pizza 2',
        'Ingredientes retirados', 'Ingredientes adicionados'
    ];
    foreach ($custom_fields as $field) {
        if (isset($cart_item_data[$field])) {
            $cart_item_data[$field] = sanitize_text_field($cart_item_data[$field]);
        }
    }
    return $cart_item_data;
}, 10, 3);

3. 挂载钩子在购物车页面渲染自定义数据

同样加到主题functions.php或自定义插件中,实现自定义文本的前端展示:

add_filter('woocommerce_get_item_data', function ($item_data, $cart_item) {
    // 数组键为字段名,值为前端展示的标签,可根据需要修改
    $custom_fields = [
        'Base Pizza 1' => '饼底1',
        'Ingredientes retirados Pizza 1' => '披萨1移除配料',
        'Ingredientes adicionados Pizza 1' => '披萨1添加配料',
        'Dueto com a pizza:' => '搭配披萨',
        'Base Pizza 2' => '饼底2',
        'Ingredientes retirados Pizza 2' => '披萨2移除配料',
        'Ingredientes adicionados Pizza 2' => '披萨2添加配料',
        'Ingredientes retirados' => '移除配料',
        'Ingredientes adicionados' => '添加配料'
    ];
    foreach ($custom_fields as $field_key => $field_label) {
        if (!empty($cart_item[$field_key])) {
            $item_data[] = [
                'key' => $field_label,
                'value' => wp_kses_post($cart_item[$field_key])
            ];
        }
    }
    return $item_data;
}, 10, 2);

内容的提问来源于stack exchange,提问作者António Sousa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:27:03