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强制隐藏购物车的配送区域:
- 进入WordPress后台「外观 > 自定义 > 额外CSS」
- 粘贴以下代码:
.woocommerce-cart .cart-collaterals .shipping_calculator { display: none !important; }
这样无论页面初始加载还是AJAX异步更新,配送区域都会保持隐藏状态。
内容的提问来源于stack exchange,提问作者sheepcloud
相关产品推荐
相关产品推荐

