WooCommerce API:在订单项上创建包含元数据的订单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WooCommerce API:在订单项上创建包含元数据的订单相关的知识,希望对你有一定的参考价值。

我正在使用此API在WooCommerce中创建订单:https://github.com/kloon/WooCommerce-REST-API-Client-Library

当我添加订单时:

$orderData = array(
    "order" => array(
        "line_items" => array( 
            array(
                "product_id" => 1, 
                "quantity" => 1
            ) 
        )
    )
);

$client->orders->create($orderData);

一切正常,订单是在WooCommerce中创建的。

但是,当我想添加有关变体的元数据的产品变体时,我该怎么做?

我尝试了几件事,包括:

$orderData = array(
    "order" => array(
        "line_items" => array( 
            array(
                "product_id" => 1, 
                "quantity" => 1,
                "variation_id" => 2,
                "variations" => array(
                    "color" => "black"
                )
            ) 
        )
    )
);

$client->orders->create($orderData);

我想要实现的是,在获得订单时:

$client->orders->get( $order_id );

颜色信息已添加到订单项的元数据中(因此,在发送电子邮件时,订单详细信息中会显示颜色说明):

line_items: [
    {
        id: ...,
        subtotal: "...",
        subtotal_tax: "...",
        total: "...",
        total_tax: "...",
        price: "...",
        quantity: 1,
        tax_class: null,
        name: "Product name",
        product_id: 1,
        sku: "",
        meta: [
            {
                key: "color",
                label: "Color",
                value: "black"
            }
        ]
    }
]

希望问题很清楚,有人可以指出我正确的解决方案:)

感谢您耐心阅读本文。

答案

您在下订单时无法指定产品变体数据,产品变体应该已经存在,并且应使用变体ID进行参考。

例如,如果您要下一个“黑色”变体的订单(比如它有变体ID 12):

"line_items": [
  {
    "product_id": 1,
    "variation_id": 12,
    "quantity": 1
  }
]

无法使用orders端点向产品变体添加元数据,请使用products端点更新产品。

以上是关于WooCommerce API:在订单项上创建包含元数据的订单的主要内容,如果未能解决你的问题,请参考以下文章

使 Woocommerce (3.8.0) 管理员电子邮件包含结帐页面中的自定义字段数据

如何从 Woocommerce 中的订单项中获取产品 sku [重复]

在 Woocommerce 3+ 中使用订单项以编程方式创建订单

带有 WooCommerce 扩展的 WP Webhooks Pro 不发送订单项

禁用 Woocommerce 购物车订单项数量价格计算

在 woocommerce 3 中获取订单项的元数据