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

WordPress+WooCommerce 3.4.0版本下如何禁用购物车AJAX(fragments)?

解决WooCommerce最新版本中禁用wc-ajax get_refreshed_fragments的问题

我最近帮不少开发者处理过这个头疼的问题——WooCommerce更新后,之前靠dequeue script或者旧插件禁用购物车片段的方法确实失效了,官方调整了脚本加载的底层逻辑。下面分享几个经过验证的有效方案,你可以根据自己的网站需求选择:

方案一:条件性启用脚本(推荐)

这个方法最灵活,只在真正需要的页面保留购物车片段脚本,其他页面直接移除,既不影响购物功能,又能减少不必要的加载时间。

把这段代码放到主题的functions.php文件,或者自己创建的自定义插件里:

add_action('wp_enqueue_scripts', 'disable_wc_cart_fragments_conditionally', 99);
function disable_wc_cart_fragments_conditionally() {
    // 只在产品页、购物车页、结账页保留脚本,其他页面移除
    if (!is_product() && !is_cart() && !is_checkout() && !is_add_payment_method()) {
        wp_dequeue_script('wc-cart-fragments');
        wp_deregister_script('wc-cart-fragments');
        
        // 重新注册woocommerce主脚本,避免影响其他功能
        wp_dequeue_script('woocommerce');
        wp_deregister_script('woocommerce');
        wp_enqueue_script('woocommerce', WC()->plugin_url() . '/assets/js/frontend/woocommerce.min.js', array('jquery'), WC_VERSION, true);
    }
}

如果你的网站有其他需要保留购物车片段的页面(比如自定义的会员页),可以在条件判断里添加对应的页面检测,比如&& !is_page('member-page')。

方案二:彻底禁用AJAX请求

如果你的网站完全不需要实时更新购物车显示(比如导航栏的购物车数量可以靠页面刷新更新),可以直接让后端返回空片段,前端就不会触发这个AJAX请求了:

add_filter('woocommerce_get_refreshed_fragments', '__return_empty_array');

这个方法最简单粗暴,但要确认不会影响你的购物流程,比如添加商品到购物车后的实时反馈如果不需要的话,用这个就很省心。

方案三:禁用内联初始化脚本

WooCommerce会在页面底部输出一段初始化购物车片段的内联JS,我们可以通过钩子阻止这段脚本在非必要页面输出:

add_filter('wc_cart_fragments_params', 'disable_wc_cart_fragments_inline_script');
function disable_wc_cart_fragments_inline_script($params) {
    if (!is_product() && !is_cart() && !is_checkout()) {
        return false;
    }
    return $params;
}

这个方法不会移除脚本文件本身,但会阻止它初始化运行,同样能避免触发那个耗时的AJAX请求。

注意事项

  • 不管用哪种方法,都建议先在测试环境验证,避免影响正常的购物功能;
  • 如果用了缓存插件,记得清除缓存后再测试效果;
  • 如果你用的是自定义主题,更新主题时记得备份修改的代码,或者用子主题来保存这些自定义代码,避免被主题更新覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:41:55