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

WooCommerce添加购物车跳转代码仅生效于单品页,如何适配商城页?

解决WooCommerce商城页Add to Cart跳转结账页的问题

原代码仅在单品页生效,是因为商城页/产品列表页的Add to Cart按钮默认使用AJAX提交请求,不会触发add_to_cart_redirect过滤器。要让商城页也实现跳转,需要同时处理非AJAX和AJAX两种添加场景:

// 处理非AJAX场景(单品页等直接跳转的Add to Cart)
add_filter('add_to_cart_redirect', 'lw_add_to_cart_redirect');
function lw_add_to_cart_redirect() {
    return wc_get_checkout_url(); // 用WooCommerce官方推荐函数替代全局变量,更稳定
}

// 处理AJAX场景(商城页、产品列表页的Add to Cart)
add_action('wp_ajax_add_to_cart', 'lw_ajax_add_to_cart_redirect');
add_action('wp_ajax_nopriv_add_to_cart', 'lw_ajax_add_to_cart_redirect');
function lw_ajax_add_to_cart_redirect() {
    $product_id = apply_filters('woocommerce_add_to_cart_product_id', absint($_POST['product_id']));
    
    // 验证产品有效性
    if (wc_get_product($product_id)) {
        wp_send_json_success([
            'redirect' => wc_get_checkout_url()
        ]);
    }
    
    wp_send_json_error();
}

代码说明

  • 第一部分保留了对非AJAX场景的处理,替换成wc_get_checkout_url()是WooCommerce的标准用法,比调用全局$woocommerce对象更可靠。
  • 第二部分通过wp_ajax_add_to_cart和wp_ajax_nopriv_add_to_cart钩子,分别处理登录/未登录用户的AJAX添加请求,在验证产品有效后,返回结账页URL让前端自动跳转。

注:如果你的主题或其他插件自定义了AJAX Add to Cart的前端逻辑,可能需要微调前端代码适配,但上述代码完全兼容WooCommerce默认的AJAX处理机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:42:04