自定义WooCommerce主题时wc_get_cart_url()跳转至cart_trashed问题
wc_get_cart_url()跳转到cart_trashed页面的问题 嘿,这种情况我之前开发WooCommerce主题时也碰到过,大概率是购物车页面的配置或者代码钩子被意外篡改了,给你几个排查和解决的方向:
检查购物车页面的状态与Slug
先去WordPress后台的「页面」列表里找到WooCommerce自动生成的购物车页面,确认它没被删除、移到回收站,也没被把Slug改成cart_trashed。正常情况下这个页面的Slug应该是cart,而且页面内容里必须包含[woocommerce_cart]短代码。要是页面被误删了,你可以重新建一个页面,添加这个短代码,再去WooCommerce设置(WooCommerce > 设置 > 高级)里把购物车页面指定为这个新页面。排查插件或自定义代码对Cart URL的修改
有些购物车优化类插件,或者主题functions.php里的自定义代码,可能会通过woocommerce_get_cart_url过滤器修改购物车的URL。你可以先临时禁用所有WooCommerce相关插件,测试wc_get_cart_url()是否返回正确地址。如果恢复正常,再逐个启用插件找到出问题的那个。
另外,检查你的主题functions.php里有没有类似这样的代码:add_filter( 'woocommerce_get_cart_url', 'custom_cart_url' ); function custom_cart_url( $url ) { // 这里可能被错误改成了cart_trashed的URL return home_url( '/cart_trashed/' ); }如果有,把它修正为
/cart/路径或者直接移除这个过滤器。刷新永久链接规则
有时候永久链接的缓存会导致URL解析异常。去WordPress后台的「设置 > 永久链接」,不用改任何设置,直接点击「保存更改」,刷新一下永久链接规则,这能解决不少URL跳转的奇怪问题。临时用更直接的方式输出购物车URL
如果上面的方法都没解决,你可以先临时用硬编码方式输出正确链接,比如:echo get_permalink( wc_get_page_id( 'cart' ) );这个函数会直接获取WooCommerce设置里指定的购物车页面链接,能绕开可能的过滤器干扰。
按这个顺序一步步排查,应该能搞定问题!
内容的提问来源于stack exchange,提问作者user9419091

