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

实现WooCommerce短码在AJAX加入购物车时自动刷新

问题分析与修复方案

你的代码核心问题有两个:

  1. 调用短码函数时未传递商品ID参数,导致无法定位对应商品的购物车数量
  2. woocommerce_add_to_cart_fragments要求返回完整HTML元素(带匹配选择器的标签),而非单纯数字

以下是修正后的完整代码:

1. 重构短码函数

让短码输出带唯一标识的HTML容器,关联商品ID:

if( ! function_exists('get_product_quantity_in_cart') ) {
    function get_product_quantity_in_cart( $atts ) {
        // 提取短码属性
        $atts = shortcode_atts( array(
            'id' => '',
        ), $atts, 'cart_qty_badge' );
        
        $product_id = absint($atts['id']);
        if( empty($product_id) || WC()->cart->is_empty() ) {
            return '<span class="cart-qty-badge" data-product-id="' . esc_attr($product_id) . '"></span>';
        }

        $total_qty = 0; 
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            if( $cart_item['product_id'] == $product_id ) {
                $total_qty += $cart_item['quantity'];
            }
        }

        // 返回带容器的数量,确保AJAX可正确替换
        return '<span class="cart-qty-badge" data-product-id="' . esc_attr($product_id) . '">' . esc_html($total_qty) . '</span>';
    }
    add_shortcode( 'cart_qty_badge', 'get_product_quantity_in_cart' );
}

2. 修正AJAX片段更新逻辑

针对购物车中商品生成对应徽章HTML,同时处理空购物车场景:

add_filter( 'woocommerce_add_to_cart_fragments', 'refresh_cart_qty_badges' );
function refresh_cart_qty_badges( $fragments ){
    // 遍历购物车所有商品,生成对应徽章片段
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product_id = $cart_item['product_id'];
        $fragments['.cart-qty-badge[data-product-id="' . esc_attr($product_id) . '"]'] = get_product_quantity_in_cart( array('id' => $product_id) );
    }

    // 购物车为空时清空所有徽章
    if( WC()->cart->is_empty() ) {
        $fragments['.cart-qty-badge'] = '<span class="cart-qty-badge" data-product-id=""></span>';
    }

    return $fragments;
}

关键说明

  • 短码使用方式不变,例如[cart_qty_badge id="123"](123为目标商品ID)
  • 生成的徽章带cart-qty-badge类和data-product-id属性,AJAX通过该选择器精准定位更新元素
  • 覆盖了添加商品、移除商品、清空购物车等所有AJAX操作场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:50:16