在WooCommerce的默认订单管理页面中,订单项目区域仅展示产品名称、数量、单价等基础信息,产品的自定义元数据不会直接显示,这给需要核对产品附加信息的商家带来了不便。通过添加自定义代码,我们可以让产品元数据直接展示在订单项目下方,无需额外跳转查看。

实现原理
WooCommerce提供了woocommerce_order_item_meta_end钩子,该钩子会在订单详情页每个订单项目的元数据区域末尾执行,我们可以在这个钩子的回调函数中获取当前订单项目的产品对象,再提取产品的自定义元数据并输出到页面上。
基础实现代码
将以下代码添加到当前主题的functions.php文件中,即可显示产品的所有自定义元数据:
add_action('woocommerce_order_item_meta_end', 'display_product_meta_in_order_items', 10, 3);
function display_product_meta_in_order_items($item_id, $item, $order) {
// 获取订单项目对应的产品对象
$product = $item->get_product();
if (!$product) {
return;
}
// 获取产品的所有自定义元数据
$meta_data = $product->get_meta_data();
if (empty($meta_data)) {
return;
}
echo '<div class="order-item-product-meta">';
echo '<p><strong>产品附加信息:</strong></p>';
echo '<ul>';
foreach ($meta_data as $meta) {
$data = $meta->get_data();
// 跳过系统默认的元数据,仅展示自定义字段
if (strpos($data['key'], '_') === 0) {
continue;
}
echo '<li>' . esc_html($data['key']) . ':' . esc_html($data['value']) . '</li>';
}
echo '</ul>';
echo '</div>';
}指定显示特定元数据
如果只需要显示某几个特定的产品元数据,而不是全部自定义字段,可以修改代码中的循环部分,指定要展示的元数据键名:
add_action('woocommerce_order_item_meta_end', 'display_specific_product_meta_in_order_items', 10, 3);
function display_specific_product_meta_in_order_items($item_id, $item, $order) {
$product = $item->get_product();
if (!$product) {
return;
}
// 指定要显示的元数据键名
$target_meta_keys = array('product_color', 'product_size', 'product_material');
$has_meta = false;
echo '<div class="order-item-product-meta">';
echo '<p><strong>产品规格:</strong></p>';
echo '<ul>';
foreach ($target_meta_keys as $meta_key) {
$meta_value = $product->get_meta($meta_key);
if (!empty($meta_value)) {
$has_meta = true;
echo '<li>' . esc_html($meta_key) . ':' . esc_html($meta_value) . '</li>';
}
}
echo '</ul>';
if (!$has_meta) {
echo '<p>暂无指定规格信息</p>';
}
echo '</div>';
}样式调整建议
默认输出的元数据可能没有合适的样式,可以在主题的样式文件中添加以下CSS,让显示效果更美观:
.order-item-product-meta {
margin-top: 10px;
padding: 8px;
background-color: #f9f9f9;
border-left: 3px solid #007cba;
font-size: 14px;
}
.order-item-product-meta ul {
margin: 5px 0 0 0;
padding-left: 20px;
}
.order-item-product-meta li {
margin-bottom: 3px;
}注意事项
- 修改主题文件前建议先备份,避免代码错误导致网站异常。
- 如果使用子主题,代码应添加到子主题的functions.php中,避免主题更新后代码丢失。
- 部分产品元数据可能是序列化数据,直接输出会显示乱码,这类数据需要先反序列化再处理。
- 如果产品元数据包含敏感信息,需要确认是否适合在订单详情页展示,避免信息泄露。
WooCommerce订单详情页产品元数据WordPress钩子订单项目修改时间:2026-06-05 16:17:56