【问题标题】:WooCommerce REST API Custom FieldsWooCommerce REST API 自定义字段
【发布时间】:2016-07-22 00:44:47
【问题描述】:

是否可以通过 WooCommerce REST API 访问订单、产品、客户的自定义字段?如果不是本地的,那么有哪些插件或解决方法或黑客可以工作?谢谢!

【问题讨论】:

  • 他们的documentation 未涵盖您具体要做什么?这将提出一个更具体的问题。
  • 通常由其他插件添加的自定义字段,例如订单类型。或者,如果我想使用 API 调用为订单创建自定义字段。
  • 您需要挖掘plugins/woocommerce/includes/api/*.php 文件中的代码,找到正确的操作或过滤挂钩并使用它。例如:当 WooCommerce 通过 API 创建订单时,在创建订单后,它会在该挂钩中提供以下挂钩 do_action( 'woocommerce_api_create_order', $order->id, $data, $this );,您可以访问已发送的 $data,您可以提取自定义字段值并处理它.
  • 这个比较详细:stackoverflow

标签: api rest woocommerce custom-fields woocommerce-rest-api


【解决方案1】:

回答我自己的问题:

可以使用以下方法:(使用 v3 旧版 API)

要将自定义字段发送回服务器: (订单)

{
  "order_meta": {
     "key": "value"
  }
}

要从服务器检索自定义字段,请将此过滤器与您的端点一起使用:

http://www.example.com/wc-api/v3/orders?filter[meta]=true

这也适用于产品。

【讨论】:

  • 绝对可以。我在我的应用程序中广泛使用它。这取决于您使用的 API 版本。新的 v1 API 基于 WP API。所以这意味着没有父字典。
  • @Daz 你好!是的,我必须用一个新类覆盖 Order 类。我是这样做的,github.com/XiaoFaye/WooCommerce.NET/issues/73。您需要访问哪些类型的数据以及您使用的是哪个支付网关?
  • @Magnetize 感谢您的回复,有趣的是,API 所做的比记录的更多。我想提取 SagePay 付款的交易 ID,目前我认为这些在元数据中,但尚未确认。
  • @Daz 没问题。 WooCommerceNET 的创建者在上面的帖子中回复说,他将在下一次更新中添加“meta_data”。嗯,当我浏览 /plugins/woocomommerce/includes/api/class-wc-rest-orders-controller.php 中的代码时,我注意到(在第 1055 行)字段不能受到保护(即不能有带前导的名称_ ) 以便由 API 更新,并且交易 ID 的命名以 _ 开头。虽然我没有尝试过,但我认为你可能会面临相当大的挑战。 ://
  • @Magnetize 感谢您的提醒 - 挑战 = 情况正常 :-)
【解决方案2】:

正如评论中提到的,WooCommerce 通过 API 创建订单后会触发 woocommerce_api_create_order 钩子,您可以使用它。

将以下代码添加到主题的functions.php文件中

add_action( 'woocommerce_api_create_order', 'my_woocommerce_api_create_order', 10, 2);

function my_woocommerce_api_create_order( $order_id, $data ) {

     // $data contains the data was posted, add code to extract the required
     // fields and process it as required

}

类似看plugins/woocommerce/includes/api/*.php文件中的代码,找到适合端点的action或者filter hook并使用。

【讨论】:

猜你喜欢
  • 2021-12-31
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 2016-11-07
  • 1970-01-01
  • 2016-09-30
相关资源
最近更新 更多