удалить продукт из категории, используя rest-api - PullRequest
1 голос
/ 31 января 2020

Мне нужно удалить много товаров из категории в моем магазине

Я пытался использовать обновление товара и редактировать свойства категории в товаре, этот

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, фильтруя категорию.

1 Ответ

1 голос
/ 31 января 2020

Есть несколько способов, которыми вы могли бы go об этом.

Давайте начнем с того, что вы уже делали, пытаясь обновить продукты.

Мой совет обновляет отдельные продукты , Либо по одному, либо Пакеты

Вы можете найти Официальный do c по этому здесь Ссылка

Так что мы хотим обновить "status": "publish", Для что-то вроде "status" : "draft"

Мы делаем это с [PUT] /wp-json/wc/v3/products/<id> EG

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"
        }
      ]
    }
  ],

Теперь мы можем также подойти к этому, «навсегда» удалив продукт или перенеся его в Tra * 1031. *

Мы делаем это одним из двух способов

Это переместит продукт в тра sh

    -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 Hey Обновите этот продукт и не дайте ему ничего обновить, поэтому он просто обновляет продукт. Теперь вы упоминаете, что удаляете продукт по щелчку, чтобы я мог видеть, как вы получаете индивидуальный идентификатор продукта, поэтому, если мы хотим удалить его, просто

$woocommerce->DELETE('products/'.$product->id,'?force=false');
...