【问题标题】:Woocommerce REST API - Invalid parameter(s): attributes [rest_invalid_param]Woocommerce REST API - 无效参数:属性 [rest_invalid_param]
【发布时间】:2018-04-02 09:06:31
【问题描述】:

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

【问题讨论】:

    标签: php json wordpress rest woocommerce


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果有人倒在这里,我会写。

      您要做的第一步是使用您需要的所有数据创建变量产品变量。

      $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】:

        你应该改变

        /products/$id/variations
        

        到:

        /products/{id}/variations
        

        然后将$id 作为参数传递给您的函数。

        【讨论】:

          【解决方案4】:

          您的属性参数无效。 您应该传递如下属性:

          {
          "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

          【讨论】:

            猜你喜欢
            • 2016-03-29
            • 2016-11-13
            • 2021-06-19
            • 1970-01-01
            • 2018-01-28
            • 1970-01-01
            • 1970-01-01
            • 2014-11-28
            • 2017-08-21
            相关资源
            最近更新 更多