我正在使用Automattic\WooCommerce
为我的网站创建一个插件。我们的想法是创建一个包含一些信息的可变产品,然后创建产品的变体。
创建产品工作正常
POST
到/products
没有任何问题
但是当我尝试创建变体时,我不断收到错误消息。最后一个是:
Fatal error: Uncaught Automattic\WooCommerce\HttpClient\HttpClientException: Error: Invalid parameter(s): attributes [rest_invalid_param]
我将此数组发送到
POST
到/products/$id/variations
,但会导致上述错误。我不知道哪个是无效的参数。
{
"date_created": "2017-10-21",
"description": "Some random description",
"sku": "",
"price": "0",
"visible": true,
"purchasable": true,
"virtual": true,
"manage_stock": false,
"stock_quantity": 1,
"in_stock": true,
"date_on_sale_from": "2017-10-21",
"date_on_sale_to": "2017-10-24",
"attributes": {
"id": 0,
"option": "No certificate"
}
}
答案 0 :(得分:1)
您的属性参数无效。 您应该传递以下属性:
{
"date_created": "2017-10-21",
"description": "Some random description",
"sku": "",
"price": "0",
"visible": true,
"purchasable": true,
"virtual": true,
"manage_stock": false,
"stock_quantity": 1,
"in_stock": true,
"date_on_sale_from": "2017-10-21",
"date_on_sale_to": "2017-10-24",
"attributes": [
{
"id": 0,
"option": "No certificate"
}
]
}
您可以查看变体的woocommerce rest API文档。
访问https://woocommerce.github.io/woocommerce-rest-api-docs/#create-a-product-variation
答案 1 :(得分:0)
你应该改变
/products/$id/variations
为:
/products/{id}/variations
然后在函数中传递$id
作为参数。
答案 2 :(得分:0)
如果有人跌倒,我会写。
您要做的第一步是创建包含您需要的所有数据的可变产品变量。
$prod = [
'name' => 'Name the product'
'type' => 'variable',
'status' => 'draft',
'sku' => 'valid-sku',
'regular_price' => '120',
'manage_stock' => 'false',
'stock_status' => 'instock',
'tax_status' => 'taxable',
'categories' => [[id => 1]],
'attributes' => [
[ //Brand
'id' => 5,
'position' => 1,
'visible' => false,
'variation' => false,
'options'=> ['Brand you want'],
'name' => 'Marca'
],[ //Gender
'id' => 3,
'position' => 2,
'visible' => false,
'variation' => false,
'options'=> 'male',
'name' => 'Gender'
]
]
];
发帖
$wooProd = $woocommerce->post('products', $prod);
然后创建变体信息
$variation = ['create' => [
'sku' => $variation['SKU'],
'manage_stock' => 'true',
'stock_quantity'=> 'SKU-VARIATON',
'regular_price' => '150',
'sale_price' => '120',
'attributes' => [[ //Brand
'id' => 5,
'position' => 1,
'visible' => false,
'variation' => false,
'options'=> ['Brand you want'],
'name' => 'Brand',
],[ //Gender
'id' => 3,
'position' => 2,
'visible' => false,
'variation' => false,
'options'=> 'Male',
'name' => 'Gender',
]
]
]];
然后发帖
$woocommerce->post( "products/$wooProd->id/variations/batch", $variation_data );
这就是一切。也许你想制作一个 For 来使变化数据更复杂或类似的东西..
我希望这能奏效或在路上有所作为:) 最好的问候!
答案 3 :(得分:0)
确保作为数字的属性值作为字符串传递。这很愚蠢,但如果您将属性值作为数字而不是字符串传递,则会出错。