# Rendelések: kiegészítők kezelése

> Kiegészítők rendelésenkénti listája és exportja, szerkesztés meglévő rendelésben, adatok kiolvasása és műveletek indítása kóddal.

Amikor a vásárló lead egy rendelést, a termékkiegészítők adatai a rendelés tételeihez kerülnek. Ez a fejezet azt mutatja meg, hol találod őket, hogyan exportálhatod és szerkesztheted őket, és hogyan használhatod fel kóddal. A kódrészleteket a sablon `functions.php` fájljába vagy egy kódrészlet-kezelő bővítménybe tedd.

## Kiegészítők rendelésenként

Minden leadott rendelésről, amelyben van kiegészítő mezős termék, egy külön bejegyzés is létrejön. Ez a bejegyzés a rendeléshez kapcsolódik, és a rendelés termékeinek összes kiegészítő mezőjét tárolja.

A bejegyzéseket a **Termékkiegészítők → Add-Ons by Order** menüpont alatt találod.

![A kiegészítők rendelésenkénti listája: cím, rendelés, termék, felhasználó és dátum oszlop](./kepek/kosar-rendeles-kiegeszitok-rendelesenkent.webp)

*A kiegészítők rendelésenkénti listája: cím, rendelés, termék, felhasználó és dátum oszlop* (https://minta-bolt.hu/wp-admin/edit.php?post_type=pewc_product_extra)

A listában a bejegyzés címe a termék neve és egy azonosító, mellette a rendelés száma, a termék és a dátum látszik. Ha még nem érkezett kiegészítős rendelés, a lista üres.

## Exportálás CSV-fájlba

A rendelésenkénti kiegészítő adatokat egy fájlba is kiviheted, például táblázatkezelőben való feldolgozáshoz.

1. Nyisd meg a **Termékkiegészítők → Rendelések exportálása** oldalt (a lap címe **Termékkiegészítők exportálása rendelésenként**).
2. Kattints az **Exportálás** gombra.
3. A böngésző letölt egy CSV-fájlt a rendelések kiegészítő mezőinek adataival.

![Az exportoldal az Exportálás gombbal](./kepek/kosar-rendeles-export.webp)

*Az exportoldal az Exportálás gombbal* (https://minta-bolt.hu/wp-admin/admin.php?page=export-product-extras)

A képen az oldal egyetlen gombja az **Exportálás**, a fájl a kattintás után azonnal letöltődik.

## Kiegészítők szerkesztése meglévő rendelésben

Egy már leadott rendelésben a kiegészítők felirata és értéke is módosítható a rendelés szerkesztőjében.

1. Nyisd meg a rendelést a **WooCommerce → Rendelések** listából.
2. A módosítandó tétel sorában kattints a ceruza ikonra.
3. A kiegészítő felirata és értéke szerkeszthetővé válik, írd át, majd mentsd a rendelést.

![Egy rendelés tétele a Szín és Ajándékcsomagolás kiegészítőkkel](./kepek/kosar-rendeles-rendeles-szerkesztes.webp)

*Egy rendelés tétele a Szín és Ajándékcsomagolás kiegészítőkkel* (https://minta-bolt.hu/wp-admin/admin.php?page=wc-orders&action=edit&id=29)

A képen a tétel neve alatt látod a kiválasztott kiegészítőket. A szerkesztéssel csak a rendelésben tárolt érték változik, a vásárlói kosár és a termék beállításai nem.

## Mezőtípusok elrejtése a rendelés adataiban

Ha egyes mezőtípusok, például a számítás mezők, nem kellenek a rendelés részleteibe, a `pewc_hidden_group_types_in_order` szűrővel elrejtheted őket:

```php
function pelda_rejtett_mezotipusok_a_rendelesben( $mezotipusok ) {
    return array( 'calculation' );
}
add_filter( 'pewc_hidden_group_types_in_order', 'pelda_rejtett_mezotipusok_a_rendelesben' );
```

A visszaadott tömb felülírja a bejövőt, ezért ha több típust akarsz elrejteni, mindet sorold fel benne. A függvénynevet cseréld egyedire. A kosárra és a pénztárra ugyanez a [Kosár: szerkesztés és megjelenés](https://hub.hellowp.io/hu/plugins/product-extras-for-woocommerce/kosar-rendeles-kosar/) fejezetben leírt másik szűrő vonatkozik.

## A kiegészítők adatainak kiolvasása a rendelésből

A rendelés tételeinek metaadataiban ott vannak a kiegészítők. A mező felirata a metakulcs, ezek előtt általában aláhúzásjel áll. A következő függvény bejárja egy rendelés tételeit, és vagy kilistázza az összes metaadatot, vagy egy megadott kulcs értékét adja vissza.

```php
function pelda_kiegeszitok_a_rendelesbol( $rendeles_id, $metakulcs = false ) {
    $rendeles = wc_get_order( $rendeles_id );
    if ( ! $rendeles ) {
        return array();
    }

    $eredmeny = array();
    foreach ( $rendeles->get_items() as $tetel_id => $tetel ) {
        if ( $metakulcs ) {
            $eredmeny[ $tetel_id ] = $tetel->get_meta( $metakulcs );
        } else {
            foreach ( $tetel->get_meta_data() as $meta ) {
                $adat = $meta->get_data();
                $eredmeny[ $tetel_id ][ $adat['key'] ] = $adat['value'];
            }
        }
    }
    return $eredmeny;
}
```

A kulcs nélküli hívás tételenként minden metaadatot visszaad, a kulcsos hívás tételenként egy értéket. Kulcs megadása előtt nézd meg a pontos nevet egy meglévő rendelés tételének adataiban.

## Művelet indítása, amikor a rendelés feldolgozódik

A bővítmény a rendelés létrehozásakor minden kiegészítő mezőnél lefuttatja a `pewc_after_create_product_extra` műveletet. Három értéket kapsz: a rendelésenkénti bejegyzés azonosítóját, a rendelést és a mező adatait. Ezzel például egyedi e-mailt küldhetsz, ha egy adott mezőben adott érték szerepel.

```php
function pelda_kiegeszito_ertesites( $bejegyzes_id, $rendeles, $mezo ) {
    $keresett_mezo  = 26;
    $keresett_ertek = '__checked__';

    if ( (int) $mezo['field_id'] !== $keresett_mezo || $mezo['value'] !== $keresett_ertek ) {
        return;
    }

    $cimzett = 'iroda@example.com';
    $targy   = 'Ajándékcsomagolást kértek: #' . $rendeles->get_id();
    $uzenet  = 'A(z) ' . $rendeles->get_id() . '. számú rendelésben ajándékcsomagolást kértek.';

    wc_mail( $cimzett, $targy, wpautop( $uzenet ) );
}
add_action( 'pewc_after_create_product_extra', 'pelda_kiegeszito_ertesites', 10, 3 );
```

Átírandó részek:

| Érték | Mit csinál |
|---|---|
| `$keresett_mezo` | A vizsgált kiegészítő mező azonosítója. |
| `$keresett_ertek` | A keresett érték. Jelölőnégyzetnél a bejelölt állapot értéke `__checked__`. |
| `$cimzett`, `$targy`, `$uzenet` | Az e-mail címzettje, tárgya és szövege. Élesítés előtt a saját címedre állítsd. |

A példa egyetlen mezőt és egyetlen értéket vizsgál. Más feltételhez a függvény elejét kell átírnod. A mező azonosítóját a mező szerkesztőjében látod.
