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

如何从WooCommerce订单中获取商品下载链接?

WooCommerce订单获取商品下载链接报错解决方案

常见报错原因

  • 订单状态未处于已完成(completed):WooCommerce默认仅已完成订单会激活商品下载权限
  • 目标商品并非可下载产品:需在产品编辑后台勾选「可下载」并添加对应下载文件
  • 使用了错误的API方法:部分方法仅适用于特定场景,需匹配正确的调用逻辑

正确代码示例

方法一:遍历订单商品项,逐个获取可下载商品的链接

$order_id = 206956;
// 推荐使用wc_get_order()而非直接实例化WC_Order,兼容性更强
$order = wc_get_order($order_id);

if ($order && $order->has_status('completed')) {
    foreach ($order->get_items() as $item_id => $item) {
        $product = $item->get_product();
        // 先判断产品是否为可下载类型
        if ($product && $product->is_downloadable()) {
            $item_downloads = $item->get_item_downloads();
            if (!empty($item_downloads)) {
                foreach ($item_downloads as $download) {
                    echo "产品ID: {$item->get_product_id()}<br>";
                    echo "下载文件名: {$download['name']}<br>";
                    echo "下载链接: {$download['url']}<br><br>";
                }
            }
        }
    }
} else {
    echo "订单不存在或未完成,无法获取下载权限";
}

方法二:直接获取整个订单的所有可下载项

$order_id = 206956;
$order = wc_get_order($order_id);

if ($order && $order->has_status('completed')) {
    // 使用get_downloadable_items()获取订单全部可下载项,而非get_item_downloads()
    $order_downloads = $order->get_downloadable_items();
    if (!empty($order_downloads)) {
        foreach ($order_downloads as $download) {
            echo "产品名称: {$download['product_name']}<br>";
            echo "下载链接: {$download['download_url']}<br><br>";
        }
    }
} else {
    echo "订单不存在或未完成,无法获取下载权限";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:10:48