如何从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
相关产品推荐
相关产品推荐

