使用rest-api从类别中删除产品

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

我需要从商店中的类别中删除很多产品

我试图使用更新产品并编辑产品中的类别属性,这一点

PUT / wp-json / wc / v3 / products /

这是我使用的脚本

for ($i=0; $i < 22; $i++) {
  $products = $woocommerce->get('products?category='.$categoryToRemove.'&per_page=50&page=1');

  $update_data = array();

  foreach ($products as $key1 => $product) {
    if(count($product->categories)>1){
      foreach ($product->categories as $key2 => $category) {
          if($category->id == $categoryToRemove){
          unset($product->categories[$key2]);
        }
      }
    }
    $woocommerce->put('products/'.$product->id, ['categories' => $product->categories]);
  }

}

当我检查产品属性并且产品仍然显示在商店中的类别内以及当我通过过滤类别通过api调用所有产品时,产品属性没有改变。

woocommerce woocommerce-rest-api
1个回答
0
投票

有几种方法可以解决这个问题。

让我们从您已经尝试进行的产品更新开始。

我的建议是一次更新单个产品,或者一次更新一批

您可以在此处Link上找到官方文档

所以我们想将"status": "publish",更新为类似"status" : "draft"的内容>

我们使用[PUT] /wp-json/wc/v3/products/<id>E.G

curl -X POST https://example.com/wp-json/wc/v3/products/batch \
    -u consumer_key:consumer_secret \
    -H "Content-Type: application/json" \
    -d '{ "update": [
    {
      "id": 799,
      "default_attributes": [
        {
          "id": 6,
          "status": "draft",
          "name": "Color",
          "option": "Green"
        },
        {
          "id": 0,
          "status": "draft",
          "name": "Size",
          "option": "M"
        }
      ]
    }
  ],

现在,我们也可以通过永久地“删除”产品或将其移至垃圾箱来解决这个问题>

我们执行2种方法之一

这会将产品移至垃圾箱

    -u consumer_key:consumer_secret```

This will Permanently delete the Product
curl -X DELETE https://example.com/wp-json/wc/v3/products/794?force=true \
    -u consumer_key:consumer_secret

因此,在您的情况下,您正在使用“ Put”尝试删除产品,所以您告诉API嘿,请更新该产品,不提供任何更新内容,因此它只是刷新该产品。现在您提到您在点击时删除了产品,因此我可以看到您检索了单个产品ID,因此,如果我们想简单地删除它,

$woocommerce->DELETE('products/'.$product->id,'?force=false');
© www.soinside.com 2019 - 2024. All rights reserved.