首页 > 解决方案 > wp_postmeta 和 wp_woocommerce_order_itemmeta 表之间的区别

问题描述

似乎两个表都在 woocommerce 中存储订单的元数据。但是如何知道将哪些数据存储到哪里呢?

我目前正在使用 update_post_meta 函数,例如,

update_post_meta( $order_id, 'newcheckboxfield', esc_attr($_POST['newcheckboxfield']) 

在每个订单的结帐处添加一个自定义字段(newcheckboxfield)。但我更喜欢元数据进入 wp_woocommerce_order_itemmeta 表,因为这似乎存储了每个订单的相关数据,对吗?

标签: mysqldatabasewordpresswoocommercecustom-post-type

解决方案


该表wp_woocommerce_order_itemmeta仅适用于所有 WooCommerce订单商品元数据(但不适用于订单元数据)

该表wp_postmeta处理所有帖子类型的元数据,例如默认 Wordpress 博客post、默认 Wordpress page、默认 Wordpress 图片attachment和所有其他自定义帖子类型。

一些 WooCommerce 默认自定义帖子类型是product, product_variation, shop_coupon, shop_order, shop_order_refund...</p>


为了更好地了解 WooCommerce 订单:

  • 大多数结帐字段都存储为订单元数据(在wp_postmeta表中)
  • 购物车项目数据存储为订单项目元数据(在wp_woocommerce_order_itemmeta表中)

结帐后的 WooCommerce 订单和订单项目自定义字段

1)订单元数据

要添加自定义字段任务订单元数据,您将使用以下挂钩:

  • woocommerce_checkout_create_order带有 2 个参数的动作钩子:$order$data(请参阅Stack OverFlow 上的此示例)
  • woocommerce_checkout_update_order_meta带有 2 个参数的动作钩子:$order_id$data(请参阅Stack OverFlow 上的此示例)

2)订单商品元数据

要将自定义字段添加为订单项元数据,您将使用以下挂钩:


推荐阅读