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

如何从自定义表单页面获取并展示WooCommerce订单详情

在网站页面展示WooCommerce订单详情的解决方案

我注意到你已经找到了一段基础代码,但内容看起来被截断了。我帮你补全并优化这段代码,让它能更安全、规范地在页面上展示WooCommerce订单的核心详情:

function get_order_details($order_id) {
    // 先获取订单对象,这是WooCommerce官方推荐的操作方式
    $order = wc_get_order( $order_id );
    
    // 检查订单是否有效,避免传入无效ID时触发报错
    if ( !$order ) {
        echo '<p>无效的订单ID,请检查后重试。</p>';
        return;
    }

    // 方式1:通过订单对象的内置方法获取数据(更稳定可靠)
    echo '<h3>订单核心详情(WooCommerce官方推荐方式):</h3>';
    echo '客户姓名:' . $order->get_billing_first_name() . ' ' . $order->get_billing_last_name() . '<br>';
    echo '账单地址:' . $order->get_billing_address_1() . ', ' . $order->get_billing_city() . '<br>';
    echo '订单总额:' . $order->get_formatted_order_total() . '<br>';
    echo '订单状态:' . wc_get_order_status_name( $order->get_status() ) . '<br>';

    // 方式2:直接读取订单的Post Meta数据(延续你最初的思路)
    $order_meta = get_post_meta($order_id);
    echo '<h3>订单元数据(直接读取Post Meta):</h3>';
    // 增加字段存在性判断,避免PHP警告;同时给meta键加上引号修复语法问题
    echo '账单名:' . (isset($order_meta['_billing_first_name'][0]) ? $order_meta['_billing_first_name'][0] : '未填写') . '<br>';
    echo '账单姓:' . (isset($order_meta['_billing_last_name'][0]) ? $order_meta['_billing_last_name'][0] : '未填写') . '<br>';
    echo '账单地址索引:' . (isset($order_meta['_billing_address_index'][0]) ? $order_meta['_billing_address_index'][0] : '无数据') . '<br>';
}

// 调用示例:把123替换成你需要展示的实际订单ID
// get_order_details(123);

几个关键优化点说明:

  • 添加了订单有效性检查,如果传入的订单ID无效,会显示友好提示而非抛出错误
  • 优先推荐使用WooCommerce订单对象的内置方法获取数据——因为WooCommerce内部结构可能更新,官方方法能保证兼容性和稳定性
  • 读取Post Meta时增加了isset()判断,避免某个字段不存在时出现PHP警告
  • 修复了你原代码中meta键未加引号的语法错误

你只需要把这段代码添加到主题的functions.php文件中,然后在需要展示订单详情的页面模板里调用get_order_details(你的订单ID)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:30:51