讲师中心 微信公众号
AI工具推荐 视频效率加速

在 WooCommerce 管理订单详情页面的订单项目中显示产品元数据

云萱大大_5563

云萱大大_5563

发布时间:2025-11-19 13:56:01

|

253人浏览过

|

来源于php中文网

原创

在 woocommerce 管理订单详情页面的订单项目中显示产品元数据

本文将指导您如何在 WooCommerce 管理订单详情页面的订单项目中显示产品元数据,并解决产品信息更新导致历史订单数据变更的问题。通过将元数据添加到订单项目,确保订单数据在产品信息变更后依然保持不变。

问题分析

原始代码直接从产品 post meta 中获取数据,导致修改产品信息时,历史订单中显示的信息也会随之改变。为了解决这个问题,我们需要在订单创建时将产品元数据保存到订单项目(order line item)中,这样即使产品信息更新,订单中的数据也不会受到影响。此外,原始代码存在尝试读取 null 属性的问题,需要进行修正。

解决方案

以下步骤展示了如何实现将产品元数据添加到订单项目,并在 WooCommerce 管理订单详情页面中显示。

1. 将产品元数据添加到订单项目

在订单创建时,使用 woocommerce_checkout_create_order_line_item 钩子将产品元数据添加到订单项目。

PHP
PHP

编写健壮的PHP代码,规避类型转换陷阱、数组怪癖及常见安全漏洞。

下载
function action_woocommerce_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
    // 获取 WC_Product 实例对象
    $product = $item->get_product();

    // 获取元数据值
    $value = $product->get_meta( 'prefix-tempiconsegna' );

    // 如果元数据值不为空
    if ( ! empty ( $value ) ) {
        $item->update_meta_data( 'prefix-tempiconsegna', $value );
    }
}
add_action( 'woocommerce_checkout_create_order_line_item', 'action_woocommerce_checkout_create_order_line_item', 10, 4 );

代码解释:

  • woocommerce_checkout_create_order_line_item 钩子在创建订单项目时触发。
  • $item 是 WC_Order_Item 对象,代表订单中的一个项目。
  • $product 是 WC_Product 对象,代表订单项目对应的产品。
  • $product->get_meta( 'prefix-tempiconsegna' ) 获取产品 prefix-tempiconsegna 元数据的值。
  • $item->update_meta_data( 'prefix-tempiconsegna', $value ) 将元数据值添加到订单项目。

2. 在 WooCommerce 管理订单详情页面显示元数据

使用 woocommerce_admin_order_item_headers 和 woocommerce_admin_order_item_values 钩子在订单详情页面显示元数据。

// 添加表头
function action_woocommerce_admin_order_item_headers( $order ) {
    // 设置列名
    $column_name = __( 'Tempi Consegna', 'woocommerce' );

    // 显示列名
    echo '<th class="my-class">' . $column_name . '</th>';
}
add_action( 'woocommerce_admin_order_item_headers', 'action_woocommerce_admin_order_item_headers', 10, 1 );

// 添加内容
function action_woocommerce_admin_order_item_values( $product, $item, $item_id ) {
    // 仅针对 "line_item" 类型,避免错误
    if ( ! $item->is_type('line_item') ) return;

    // 获取元数据值
    $value = $item->get_meta( 'prefix-tempiconsegna' );

    // 如果元数据值不为空
    if ( ! empty ( $value ) ) {
        echo '<td>' . $value . '</td>';
    } else {
        echo '<td>Meta not found!</td>';        
    }
}
add_action( 'woocommerce_admin_order_item_values', 'action_woocommerce_admin_order_item_values', 10, 3 );

代码解释:

  • woocommerce_admin_order_item_headers 钩子用于添加表头。
  • woocommerce_admin_order_item_values 钩子用于添加内容。
  • $item->is_type('line_item') 检查当前项目是否为订单项目,避免在其他类型的项目(如运费)中出现错误。
  • $item->get_meta( 'prefix-tempiconsegna' ) 获取订单项目中 prefix-tempiconsegna 元数据的值。

注意事项

  • 确保将代码添加到你的主题的 functions.php 文件或自定义插件中。
  • prefix-tempiconsegna 应该替换为你实际使用的元数据键名。
  • 如果元数据值为空,可以根据需要显示不同的内容。

总结

通过将产品元数据添加到订单项目,可以确保历史订单数据在产品信息更新后依然保持不变。 这种方法避免了直接从产品 post meta 中获取数据导致的问题,并提供了更可靠的订单数据管理方式。 同时,修正了原始代码中可能出现的 null 属性读取错误,提高了代码的健壮性。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

509

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1638

2024.03.01

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

0

2026.09.21

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

0

2026.09.21

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

0

2026.09.21

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

0

2026.09.21

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

40

2026.09.20

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

0

2026.09.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn