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

如何修改WooCommerce代码实现一键加多商品后跳转结账页

解决批量添加多门课程到购物车后跳转结账页的问题

问题背景

我使用WordPress/WooCommerce搭建在线课程网站,搭配Tutor LMS 2.0,需要实现一个按钮一次性将多门课程商品加入购物车。现有的代码已经能完成批量加购,但点击按钮后会跳转到首页,希望修改代码让点击后直接跳转到结账页面(着陆页为https://my.betterlifedesign.com/ultimate-bundle/,按钮位于页面底部)。

修改后的代码

private $prevent_redirect = false; // 用于处理多商品时阻止WooCommerce默认跳转

function __construct() {
    if ( ! isset( $_REQUEST[ 'add-more-to-cart' ] ) ) return; // 无批量加购请求时不加载
    $this->prevent_redirect = 'no'; // 强制阻止WC自动跳转,确保所有商品都能处理完成
    add_action( 'wp_loaded', [ $this, 'add_more_to_cart' ], 21 ); // 在WC默认逻辑之后执行批量加购
    add_action( 'pre_option_woocommerce_cart_redirect_after_add', [ $this, 'intercept_option' ], 9000 ); // 拦截WC跳转设置
}

function intercept_option() {
    return $this->prevent_redirect;
}

function add_more_to_cart() {
    $product_ids = explode( ',', $_REQUEST['add-more-to-cart'] );
    
    // 遍历所有商品ID,调用WC自带的加购逻辑
    foreach ( $product_ids as $product_id ) {
        $_REQUEST['add-to-cart'] = $product_id;
        WC_Form_Handler::add_to_cart_action();
    }
    
    // 所有商品加购完成后,直接重定向到结账页面
    wp_safe_redirect( wc_get_checkout_url() );
    exit;
} 

new add_more_to_cart;

关键修改说明

  • 移除了原代码中针对最后一个商品恢复默认跳转的逻辑,全程保持阻止WooCommerce的自动跳转,避免中途触发跳转
  • 在所有商品批量加购完成后,使用WooCommerce官方函数wc_get_checkout_url()获取正确的结账页面地址,通过wp_safe_redirect()执行安全重定向,并用exit终止后续代码执行,确保跳转生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:05:24