如何从自定义表单页面获取并展示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
相关产品推荐
相关产品推荐

