# REST API: termékszintű kiegészítők kezelése

> Termék és kiegészítőinek létrehozása, módosítása, bővítése és szűkítése a WooCommerce REST API-val, curl példákkal.

A példákkal terméket és annak kiegészítőit hozhatod létre és tarthatod karban a WooCommerce REST API-val. A mezők leírása a REST API referenciában van.

## Előkészületek

- Tesztboltot használj, amelyen a WooCommerce és a Product Add-Ons aktív.
- Hozz létre WooCommerce REST API-kulcsot olvasási és írási joggal, és HTTPS-en keresztül hívd a boltot.
- Cseréld a példában szereplő címet és kulcsot a sajátodra. Valódi kulcsot soha ne tegyél verziókezelőbe.
- A kérések egymásra épülnek. A létrehozó kérés válaszából jegyezd fel a termék és a kiegészítők azonosítóját, és a későbbi kérésekben ezeket használd.
- A `PUT` kérés, amely tartalmazza az `addons` tömböt, felülírja a termék kiegészítőinek körét: minden megtartandó kiegészítőt vegyél bele. Ha egy opciót kihagysz a frissített `options` tömbből, az opció törlődik.

## 1. Termék létrehozása két kiegészítővel

A kérés vázlat állapotú terméket hoz létre. Az `exclude_global_add_ons: true` miatt a globális kiegészítők nem érvényesek rá. A válaszban megkapod a további lépésekhez szükséges azonosítókat.

```bash
curl -X POST \
  https://example.com/wp-json/wc/v3/products \
  -u customer_key:customer_secret \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Boldogság gyűrű",
  "status": "draft",
  "type": "simple",
  "regular_price": "21.99",
  "description": "Gyönyörű gyűrű, amely jókedvre derít.",
  "exclude_global_add_ons": true,
  "addons": [
    {
      "name": "Gravírozás",
      "title_format": "label",
      "description": "Kézi gravírozás a gyűrűre",
      "type": "custom_text",
      "display": "select",
      "restrictions_type": "any_text",
      "price_type": "flat_fee",
      "price": "100",
      "placeholder": "Neked",
      "min": 0,
      "max": 10
    },
    {
      "name": "Hozzáillő tű",
      "type": "multiple_choice",
      "required": false,
      "title_format": "label",
      "default": "0",
      "options": [
        {
          "label": "Ezüst",
          "price": "30",
          "price_type": "flat_fee",
          "visibility": true
        },
        {
          "label": "Arany",
          "price": "45",
          "price_type": "flat_fee",
          "visibility": true
        }
      ]
    }
  ]
}'
```

## 2. Kiegészítő módosítása és opció hozzáadása

Az első kiegészítő új nevet, új árat és nagyobb legnagyobb hosszt kap. A másodikhoz új opció (platina) kerül. A meglévő opciókat is el kell küldeni, különben törlődnek.

```bash
curl -X PUT \
  https://example.com/wp-json/wc/v3/products/123 \
  -u customer_key:customer_secret \
  -H "Content-Type: application/json" \
  -d '{
  "addons": [
    {
      "id": 1719406272,
      "name": "Kézi gravírozás",
      "price": "120",
      "max": 12
    },
    {
      "id": 1719406273,
      "options": [
        {
          "label": "Ezüst",
          "price": "30",
          "price_type": "flat_fee",
          "visibility": true
        },
        {
          "label": "Arany",
          "price": "45",
          "price_type": "flat_fee",
          "visibility": true
        },
        {
          "label": "Platina",
          "price": "50",
          "price_type": "flat_fee",
          "visibility": true
        }
      ]
    }
  ]
}'
```

## 3. Új kiegészítő hozzáadása

A meglévő kiegészítőket azonosítóval jelöld meg, az újat teljes leírással add hozzá.

```bash
curl -X PUT \
  https://example.com/wp-json/wc/v3/products/123 \
  -u customer_key:customer_secret \
  -H "Content-Type: application/json" \
  -d '{
  "addons": [
    {
      "id": 1719406272
    },
    {
      "id": 1719406273
    },
    {
      "name": "Díszdoboz egyedi szöveggel",
      "type": "custom_text",
      "price_type": "quantity_based",
      "price": "20"
    }
  ]
}'
```

## 4. Kiegészítő eltávolítása

Sorold fel azokat a kiegészítőket, amelyeket meg akarsz tartani. A kihagyottak törlődnek a termékről. Ha az összeset törölnéd, küldj üres `addons` tömböt.

```bash
curl -X PUT \
  https://example.com/wp-json/wc/v3/products/123 \
  -u customer_key:customer_secret \
  -H "Content-Type: application/json" \
  -d '{
  "addons": [
    {
      "id": 1719406272
    },
    {
      "id": 1719406273
    }
  ]
}'
```

## Ellenőrzés és hibaelhárítás

Minden módosítás után olvasd vissza a terméket `GET` kéréssel, és nézd meg, hogy a kiegészítők azonosítói, értékei és opciói a kívántak-e.

- Ha a kérés hibával tér vissza, ellenőrizd a végpontot, a HTTPS-kapcsolatot, a kulcs jogosultságait és az azonosítókat.
- Ha egy kiegészítő eltűnt, hasonlítsd össze a frissítésben elküldött teljes tömböt azzal, amit meg akartál tartani.
