WooCommerce Rest API 未使用 Curl 更新产品数据

问题描述 投票:0回答:1

我有一个用于开发和测试目的的 WooCommerce 网站,然后我将为客户编写一个 API,以便他可以在另一个 WooCommerce 网站中列出、发布、更新和删除他/她的产品。

我的问题是,产品在使用 Curl 后并未更新,如文档所述:https://woocommerce.github.io/woocommerce-rest-api-docs/#update-a-product

GET 请求按预期工作正常,它列出了产品和产品:

curl -X GET https://mywebsite.com/dev/wp-json/wc/v3/products/53 \
-u ck_key:cs_key 
}

// gives this below
{
"id": 53,
"name": "iphone12",
"slug": "iphone12",
"permalink": "https:\/\/mywebsite.com\/dev\/producto\/iphone12",
"date_created": "2023-11-10T19:42:48",
"date_created_gmt": "2023-11-11T01:42:48",
"date_modified": "2023-11-11T19:49:43",
"date_modified_gmt": "2023-11-12T01:49:43",
"type": "simple",
"status": "publish",
"featured": false,
"catalog_visibility": "visible",
"description": "",
"short_description": "",
"sku": "iphone12",
"price": "2343",
"regular_price": "2343",
"sale_price": "",
"date_on_sale_from": null,
"date_on_sale_from_gmt": null,
"date_on_sale_to": null,
"date_on_sale_to_gmt": null,
"on_sale": false,
"purchasable": true,
"total_sales": 0,
"virtual": false,
"downloadable": false,
"downloads": [],
"download_limit": -1,
"download_expiry": -1,
"external_url": "",
"button_text": "",
"tax_status": "taxable",
"tax_class": "",
"manage_stock": true,
"stock_quantity": 1,
"backorders": "no",
"backorders_allowed": false,
"backordered": false,
"low_stock_amount": null,
"sold_individually": false,
"weight": "",
"dimensions": {
    "length": "",
    "width": "",
    "height": ""
},
"shipping_required": true,
"shipping_taxable": true,
"shipping_class": "",
"shipping_class_id": 0,
"reviews_allowed": true,
"average_rating": "0.00",
"rating_count": 0,
"upsell_ids": [],
"cross_sell_ids": [],
"parent_id": 0,
"purchase_note": "",
"categories": [{
    "id": 15,
    "name": "Sin categorizar",
    "slug": "sin-categorizar"
}],
"tags": [],
"images": [],
"attributes": [{
    "id": 1,
    "name": "Linea",
    "position": 0,
    "visible": true,
    "variation": true,
    "options": ["EQDA"]
}],
"default_attributes": [],
"variations": [],
"grouped_products": [],
"menu_order": 0,
"price_html": "<span class=\"woocommerce-Price-amount amount\"><bdi><span class=\"woocommerce-Price-currencySymbol\">Q<\/span>2,343.00<\/bdi><\/span>",
"related_ids": [35, 31, 32, 45, 40],
"meta_data": [],
"stock_status": "instock",
"has_options": false,
"post_password": "",
"_links": {
    "self": [{
        "href": "https:\/\/mywebsite.com\/dev\/wp-json\/wc\/v3\/products\/53"
    }],
    "collection": [{
        "href": "https:\/\/mywebsite.com\/dev\/wp-json\/wc\/v3\/products"
    }]
}
}

但是后来我做了一个 Curl 来更新产品,就像文档所说的那样,它甚至没有更新它:

我尝试了这种方法:https://mywebsite.com/dev/wp-json/wc/v1/products/53?name=newIphone 15 并且有效!但是...这不是我想要的,因为我将使用 C# 或任何其他使用直接 Curl 代码的编程语言,这就是我需要序列化对象的原因。

我该如何解决这个问题?有什么办法或者我的网站配置有问题吗?以前有人遇到过这个问题吗?文档很糟糕!

json wordpress curl woocommerce woocommerce-rest-api
1个回答
1
投票

完成!通过使用 POST 而不是 PUT 解决了这个问题。该文档是错误的,也许 WooCommerce 开发人员忘记提及它是一个 POST。

这个方法有效:

curl -X POST https://mywebsite.com/dev/wp-json/wc/v3/products/53 \
-u ck_key:cs_key \
-H "Content-Type: application/text" \
-d '{
     "name": "new"
    }'
© www.soinside.com 2019 - 2024. All rights reserved.