如何在WooCommerce新HPOS数据库结构中获取订单元数据
WooCommerce HPOS 订单元数据获取解决方案
你遇到的问题核心是元数据存储层级不匹配:
- 你通过
$order->update_meta_data()存储的是订单级别的自定义元数据,直接关联在订单对象本身 - 而你尝试遍历
$order->get_items()去获取,是在访问订单项(商品、运费等条目)的元数据,这两个层级完全独立,所以返回null
正确的获取代码
直接使用订单对象的get_meta()方法即可,和存储操作对应:
$order = wc_get_order( $post_id ); // 获取订单级自定义元数据,第二个参数true表示返回单值而非数组 $tracking_value = $order->get_meta( '_tracking', true ); echo $tracking_value; // 输出:12345678
补充说明
如果你的需求是给订单项添加元数据(比如给某个商品条目单独加跟踪号),才需要操作订单项对象,示例如下:
// 存储订单项元数据 $order = wc_get_order( $post_id ); foreach ( $order->get_items() as $item_id => $item ) { $item->update_meta_data( '_item_tracking', '87654321' ); $item->save(); } // 获取订单项元数据 $order = wc_get_order( $post_id ); foreach ( $order->get_items() as $item_id => $item ) { $item_tracking = $item->get_meta( '_item_tracking', true ); echo $item_tracking; }
内容的提问来源于stack exchange,提问作者Douglas Marsh
相关产品推荐
相关产品推荐

