Woocommerce REST API - 无效参数:属性[rest_invalid_param]

时间:2017-10-21 09:30:38

标签: php json wordpress rest woocommerce

我正在使用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"
    }
}

4 个答案:

答案 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)

确保作为数字的属性值作为字符串传递。这很愚蠢,但如果您将属性值作为数字而不是字符串传递,则会出错。