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

WooCommerce已加购产品显示购物车数量及无需刷新页面修复问题

解决WooCommerce加入购物车按钮需手动刷新才显示已购数量的问题

原代码仅在页面加载时渲染按钮文本,未适配WooCommerce AJAX加购的异步逻辑,所以才需要手动刷新生效,以下是完整可直接使用的修复后代码:

// 修改加入购物车按钮文本,同时适配列表页和详情页
add_filter( 'woocommerce_product_add_to_cart_text', 'wcpt_modify_add_to_cart_text', 9999, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text', 'wcpt_modify_add_to_cart_text', 9999, 2 );

function wcpt_modify_add_to_cart_text( $text, $product ) {
    // 购物车为空直接返回默认文本
    if ( WC()->cart->is_empty() ) return '加入报价单';

    // 遍历购物车匹配商品
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
        $qty = $cart_item['quantity'];
        // 匹配到对应商品返回带数量的文本
        if ( $product->get_id() == $product_id ) {
            return sprintf( '%d - 已添加', $qty );
        }
    }

    // 购物车非空但无当前商品返回默认文本
    return '加入报价单';
}

// AJAX加购后同步更新按钮文本,无需刷新页面
add_filter( 'woocommerce_add_to_cart_fragments', 'wcpt_update_cart_button_text_fragment', 9999 );
function wcpt_update_cart_button_text_fragment( $fragments ) {
    global $product;
    
    // 仅在商品相关页面生效,可根据需求调整生效范围
    if ( ! is_shop() && ! is_product_category() && ! is_product() ) {
        return $fragments;
    }
    
    // 生成更新后的按钮文本
    $new_text = wcpt_modify_add_to_cart_text( '', $product );
    // 选择器匹配所有加购按钮,若主题按钮类名特殊可自行调整此处
    $fragments['.single_add_to_cart_button, .add_to_cart_button[data-product_id="'.$product->get_id().'"]'] = '<button type="submit" class="single_add_to_cart_button button alt">' . $new_text . '</button>';
    
    return $fragments;
}

使用方法

将上述代码复制到当前使用的WordPress主题functions.php文件末尾,或者自定义功能插件的代码文件中即可。如果主题加购按钮的CSS类名和默认样式不一致,自行调整代码中选择器部分即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:18:04