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

如何在WooCommerce中更新订单为完成状态并跳转至含下载链接的感谢页

解决方案

1. 修正感谢页跳转URL,携带订单标识参数

默认WooCommerce订单感谢页需要订单ID和订单密钥才能正确加载对应订单的信息(包括下载链接),你当前的跳转URL缺少这些关键参数,导致页面无法识别目标订单。

修改Ajax处理的PHP代码,在更新订单状态后,获取订单密钥并拼接完整的感谢页URL返回给前端:

// 订单状态更新代码之后
$order_key = $order->get_order_key();
$thankyou_url = wc_get_endpoint_url('order-received', $order_id, get_home_url()) . '&key=' . $order_key;

// 返回成功响应及跳转地址
wp_send_json_success(array(
    'redirect_url' => $thankyou_url
));

前端JS接收响应后跳转:

// Ajax请求成功回调示例
success: function(response) {
    if (response.success) {
        window.location.href = response.data.redirect_url;
    }
}

2. 手动确保订单完成时授予下载权限(可选)

虽然WooCommerce默认会为已完成的虚拟订单自动开通下载权限,但自定义支付场景下可能存在触发延迟,可手动调用函数确保权限生效:

$order = new WC_Order($order_id);
if (!empty($order)) {
    $order->update_status('completed');
    
    // 手动触发下载权限授予逻辑
    if ($order->is_download_permitted()) {
        foreach ($order->get_items() as $item) {
            $product = $item->get_product();
            if ($product->is_downloadable()) {
                $order->grant_download_access($item);
            }
        }
    }
}

3. 检查感谢页模板的下载链接输出逻辑

如果上述操作后仍不显示下载链接,检查主题的thankyou.php模板(路径:wp-content/themes/你的主题/woocommerce/checkout/thankyou.php),确保包含WooCommerce默认的下载链接输出代码:

<?php if ( $order->has_downloadable_item() && $order->is_download_permitted() ) : ?>
    <?php do_action( 'woocommerce_before_downloads' ); ?>
    <?php wc_get_template( 'order/order-downloads.php', array( 'order' => $order ) ); ?>
    <?php do_action( 'woocommerce_after_downloads' ); ?>
<?php endif; ?>

若主题模板缺失这段代码,直接添加即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:42:33