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


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

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

问题分析

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

解决方案

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

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

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

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 );

代码解释:

Primeshot Primeshot

专业级AI人像摄影工作室

Primeshot 36 查看详情 Primeshot
  • 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 属性读取错误,提高了代码的健壮性。

以上就是在 WooCommerce 管理订单详情页面的订单项目中显示产品元数据的详细内容,更多请关注php中文网其它相关文章!


# 解决问题  # 网站搭建优化在线咨询  # 山东怎样提升关键词排名  # 武汉网站优化推广  # 汕尾专业网站优化方法  # 衡阳网站建设哪个公司好  # 湘潭企业网站建设总结  # seo关键词排名金手指下拉三  # 厦门网站建设的类型有  # 口腔诊所营销推广软件  # 网站排名优化全国电销  # php  # 自定义  # 数据管理  # 中文网  # 相关文章  # 并在  # 为你  # 也会  # 为空  # 怎么看 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 路由器DNS怎么设置最快 优化DNS提升上网速度教程  悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置  批改网官网首页登录 批改网学生用户登录入口  告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  百度网盘网页入口链接分享 百度网盘官网入口网页登录  VS Code快捷键when上下文子句的妙用  mysql中外键约束如何使用_mysql FOREIGN KEY操作  性能与资源监视器快捷打开  一点万象签到领积分指南  优化Leaflet弹出层图片显示:条件渲染策略  mail.qq.com登录入口 QQ邮箱网页版直达  厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  MongoDB聚合管道:高效统计列表中各项的文档数量  如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐  Symfony路由参数转换器:实体存在性验证与错误处理策略  铁路12306官网登录入口 铁路12306在线购票官方平台  J*aScript调试技巧_性能分析与内存快照  使用Selenium在无头Chrome中交互动态菜单和复选框的策略  PHP安全加载非公开目录图片与动态内容类型处理指南  精通VS Code多光标编辑以实现闪电般快速的修改  解决VS Code中Python版本冲突与输出异常的指南  Win10共享文件夹设置方法 Win10局域网文件共享全攻略【教程】  邮政快递寄件查询入口 邮政快递收件查询入口  《全民k歌》音乐怎么下载到本地2025  知音漫客官网首页入口_知音漫客热门漫画推荐  优化Asyncio嵌套函数调度:使用生产者-消费者模式实现并发流处理  CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现  如何定制PrimeNG Sidebar的背景颜色  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略  视频号视频怎么提取文案?提取的文案如何优化与使用?  如何查询个人病历记录  抖音火山版如何进行提现  抖音手机分身两个账号怎么切换?分身两个系统是一样的吗?  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  word文档中的分隔符有哪些不同类型和用途_Word分隔符类型与用途方法  解决C#跨线程访问XML对象的异常 安全的并发XML处理模式  如何在CSS中使用伪类选择器_hover实现悬停效果  Safari浏览器自动填表功能失效怎么办 Safari表单管理修复  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  微信朋友圈怎么设置三天可见 微信朋友圈设置指定天数可见步骤【教程】  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  diskgenius分区工具如何设置Bios启动项  雨课堂官网在线登录 网页版雨课堂登录链接  小红书网页版首页入口 小红书网页版电脑端官方登录链接  iphone16系列配置参数介绍  网页版网易云音乐入口_网易云音乐在线官网登录  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩 

 2025-11-19

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.