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

WooCommerce购物车页面隐藏配送方式失效问题求助

解决WooCommerce购物车删除商品后配送区域重新显示的问题

问题根源在于你之前的代码仅在页面初始加载时生效,而购物车删除商品是通过AJAX异步更新页面内容,此时is_cart()在AJAX请求中不会返回true,导致过滤钩子未触发,配送区域重新出现。

修正后的PHP代码

选择以下任意一段替换你主题functions.php中的原有代码:

方法1:修改woocommerce_cart_needs_shipping钩子

add_filter( 'woocommerce_cart_needs_shipping', 'filter_cart_needs_shipping', 99 );
function filter_cart_needs_shipping( $needs_shipping ) {
    // 匹配购物车页面或购物车更新的AJAX请求
    if ( is_cart() || ( defined('DOING_AJAX') && DOING_AJAX && isset( $_POST['action'] ) && $_POST['action'] === 'woocommerce_update_cart' ) ) {
        $needs_shipping = false;
    }
    return $needs_shipping;
}

方法2:修改woocommerce_cart_ready_to_calc_shipping钩子

function disable_shipping_calc_on_cart( $show_shipping ) {
    // 匹配购物车页面或购物车更新的AJAX请求
    if( is_cart() || ( defined('DOING_AJAX') && DOING_AJAX && isset( $_POST['action'] ) && $_POST['action'] === 'woocommerce_update_cart' ) ) {
        return false;
    }
    return $show_shipping;
}
add_filter( 'woocommerce_cart_ready_to_calc_shipping', 'disable_shipping_calc_on_cart', 99 );

可选:添加CSS双重保障

如果担心PHP钩子在极端场景下失效,可添加CSS强制隐藏购物车的配送区域:

  1. 进入WordPress后台「外观 > 自定义 > 额外CSS」
  2. 粘贴以下代码:
.woocommerce-cart .cart-collaterals .shipping_calculator {
    display: none !important;
}

这样无论页面初始加载还是AJAX异步更新,配送区域都会保持隐藏状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:46:07