WooCommerce单页购物车结账页无修改点击更新按钮跳转问题
解决WooCommerce单页购物车未改数量点击Update Cart跳转默认页面问题
问题场景
我搭建了单页网站,将产品列表、购物车与结账功能整合在同一页面(名为Store),并把该页面设为WooCommerce的结账页面。目前添加商品、调整数量及结账功能均正常,但未修改商品数量时点击「Update Cart」按钮,会跳转到默认购物车页面(/cart)。
已完成的设置
- 创建名为Store的新页面
- 在WooCommerce设置中将其设为「Checkout Page」
- 在区块编辑器添加Checkout块
- 添加代码
add_filter('woocommerce_checkout_redirect_empty_cart', '__return_false');允许查看空购物车页面 - 在页面模板添加购物车短代码
echo do_shortcode('[woocommerce_cart]');
已尝试但无效的方法
- 仅在数量修改时显示Update Cart按钮,但多商品场景下自定义数量按钮实现复杂
- 通过.htaccess将/cart重定向至/store,破坏了购物车原有功能
- 添加代码
wp_nonce_field( 'woocommerce-cart', '_wpnonce', false, true );修改nonce,无效果
解决方案
使用woocommerce_update_cart_action_cart_redirect过滤器,强制覆盖购物车更新后的跳转地址,指向你的Store单页:
add_filter('woocommerce_update_cart_action_cart_redirect', 'custom_update_cart_redirect_to_store'); function custom_update_cart_redirect_to_store($redirect_url) { // 获取Store页面的URL,根据实际页面slug修改参数(示例中slug为store) $store_page_url = get_permalink(get_page_by_path('store')); if ($store_page_url) { return $store_page_url; } // 若获取失败,返回原跳转地址 return $redirect_url; }
说明
- 该过滤器会拦截WooCommerce默认的购物车更新跳转逻辑,无论是否修改商品数量,点击Update Cart后都会跳转到你的Store单页
- 请确认页面slug是否正确,若你的Store页面别名不是
store,需修改get_page_by_path('store')中的参数为实际slug - 代码可添加至主题的
functions.php文件,或通过自定义代码插件(如Code Snippets)添加,避免修改WooCommerce核心文件导致更新失效
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

