Woocommerce撤销删除商品后重定向至购物车的实现方法
实现撤销购物车删除商品后的重定向
你已经通过template_redirect钩子搞定了删除商品后的重定向,那撤销操作的逻辑其实可以复用同一个钩子,只需要额外判断恢复商品对应的参数就行,非常简单。
Woocommerce在点击「Undo」恢复购物车商品后,会在URL中带上restored_item=1这个参数(你可以自己点击Undo后观察地址栏确认),所以我们只需要在现有代码里新增这个判断条件即可。
修改后的完整代码如下:
add_action( 'template_redirect', function() { // 获取删除商品和恢复商品的参数 $removed_item = $_GET['removed_item'] ?? null; $restored_item = $_GET['restored_item'] ?? null; // 只要满足其中一个条件,就重定向到购物车页面 if ( $removed_item === '1' || $restored_item === '1' ) { wp_safe_redirect( '/cart', 301 ); die(); } } );
几个小补充:
- 这个代码完全兼容你原来的逻辑,只是新增了对恢复操作的判断,不用改动原有功能
- 不管购物车最终是空还是有商品,都会强制跳转到
/cart页面,完全符合你的需求 - 用
wp_safe_redirect比直接写header()更安全,能自动过滤不安全的跳转目标 - 这里用的是301永久重定向,如果需要临时重定向(比如测试阶段),可以把301改成302
如果你的Woocommerce版本比较特殊,参数可能有变化,你可以自己点击Undo后看一下地址栏的URL,比如会显示类似yourdomain.com/cart?restored_item=1,这样就能确认参数是否正确。绝大多数官方版本的Woocommerce都是用这个参数的。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

