# Attribútumok, ACF és más bővítmények a képletekben

> Termékattribútum értéke, Advanced Custom Fields számmezők, foglalások és variációk címkéi a számítási képletekben.

## Termékattribútumok a képletben

A számítás mező a termék globális (taxonómia-alapú) attribútumából is vehet számértéket. A címke az attribútum slugja kapcsos zárójelben, például `{pa_weight}`.

### A slug megkeresése

Az attribútum slugja kisbetűs, és `pa_` előtaggal kezdődik (például `pa_weight`, `pa_colour`, `pa_length`). Pontosan úgy kell beírnod, ahogy a WooCommerce tárolja. A slug a **Termékek → Attribútumok** oldalon látható.

### Lépések

1. A **Termékek → Attribútumok** oldalon jegyezd fel a használni kívánt globális attribútum slugját.
2. A terméken, az **Attribútumok** fülön add hozzá az attribútumot, és válaszd ki az értékét (értékeit).
3. Ügyelj rá, hogy az első kiválasztott érték szám legyen, például `2.5` vagy `10`.
4. A számítás mező képletébe kézzel gépeld be a `{pa_slug}` címkét. A képletszerkesztőben az attribútumokhoz nincs beszúró gomb vagy automatikus kiegészítés.
5. Kombináld a címkét más mezőkkel, műveletekkel és változókkal. Több attribútumot is használhatsz egy képletben.

Példák:

```text
{product_price} * {pa_weight}
{pa_length} * {pa_width} * {pa_height}
round( {pa_weight} * 2.5, 2 )
```

### Korlátozások

- Csak globális attribútum működik. Az egyedi (termékenkénti) attribútumra hivatkozó képlet nem értékelődik ki.
- Csak az attribútumhoz a terméken kiválasztott első érték számít, a többit figyelmen kívül hagyja.
- Az érték szövegként olvasódik be, és a számjegyeken és a tizedesponton kívül minden törlődik. A „2.5 kg” így 2,5 lesz. Egy nem számszerű érték, például „Piros”, üres marad, és a képlet hibát ad.
- A képletszerkesztő ellenőrzője nem vizsgálja az attribútumot: nem szól, ha az attribútum nem létezik, nem szám vagy nem globális. A hiba a termékoldalon hibaüzenetként vagy üres eredményként jelentkezik.

### Ha nem működik

Ellenőrizd, hogy

1. az attribútum globális, nem egyedi,
2. a `{pa_xxx}` slug pontosan egyezik az attribútum slugjával,
3. a terméken kiválasztott érték sima szám, vagy csak olyan karaktereket tartalmaz, amelyek törlése nem zavar.

## ACF-értékek a képletben

A termékenként eltérő alapadatokat (díjat, átváltási tényezőt) Advanced Custom Fields (ACF) számmezőben tárolhatod, és a képletben felhasználhatod.

**Követelmények:** a bővítmény, az Advanced Calculations kiegészítő és az Advanced Custom Fields (az ingyenes és a prémium változat is jó).

### 1. Számmező létrehozása az ACF-ben

1. Az **ACF → Mezőcsoportok** oldalon kattints az **Új hozzáadása** gombra.
2. A mező típusa legyen **Szám**.
3. Adj meg egy címkét, például „Alapdíj”. A mező neve magától kitöltődik (például `base_fee`).
4. Ha több értékre van szükséged, vegyél fel további szám mezőket.
5. A beállításoknál állítsd be, hogy a csoport akkor jelenjen meg, ha a bejegyzéstípus **Termék**.

Csak szám típusú mező használható a képletben, a szöveges, kép és más mezőket a rendszer figyelmen kívül hagyja.

### 2. Érték megadása termékenként

Mentsd a mezőcsoportot. Minden termék szerkesztőoldalán megjelenik az új ACF-szakasz, itt add meg az adott termék értékét (például `25` az `base_fee` mezőhöz). Az ACF-értékek nem látszanak a termékoldalon, a vásárló nem látja őket.

### 3. Hivatkozás a képletben

1. Vegyél fel egy új számítás mezőt.
2. A **Számítások** fülön írd be a címkét úgy, hogy a mező **neve** (nem a címkéje) elé `acf_` kerül:

   ```text
   {acf_base_fee}
   ```

Az ACF-címkéket kombinálhatod más címkékkel (`{field_2}`, `{product_weight}`, `{product_price}`, `{quantity}`, `{variable_1}`), és több ACF-címkét is használhatsz. A `+ - * / ( )` műveletek és az olyan függvények, mint a `sqrt()`, `round()`, `min()` és `max()`, mind használhatók.

### 4. Mentés és próba

Mentsd a terméket, és próbáld ki a termékoldalon. Ha az eredmény hibás, nyisd meg a böngésző konzolját, és keress feloldatlan `{acf_...}` címkét. Gyakori okok:

- a képletben szereplő név nem egyezik az ACF-mező nevével,
- a mező nincs hozzárendelve a termékhez,
- a mező értéke nem szám,
- az Advanced Calculations kiegészítő nincs aktiválva.

### Példaképletek

| Példa | ACF-mezők | Művelet | Képlet |
| --- | --- | --- | --- |
| Négyzetméterár | `price_per_sqm` | **Megjelenítés költségként** | `{field_1} * {field_2} * {acf_price_per_sqm}` |
| Beállítási díj | `setup_fee` | **Megjelenítés költségként** | `{acf_setup_fee} + {field_1} * {quantity}` |
| Minimális díj | `rate`, `min_charge` | **Megjelenítés költségként** | `max({field_1} * {acf_rate}, {acf_min_charge})` |
| Szállítási súly a sűrűségből | `density` | **Hozzáadás a termék súlyához** | `{field_1} * {field_2} * {field_3} * {acf_density}` |
| Szükséges egységek száma | `coverage` | **Mennyiség frissítése** | `ceil({field_1} / {acf_coverage})` |
| Mennyiségi kedvezmény küszöbe | `bulk_threshold` | **Termék árának beállítása** | `{quantity} >= {acf_bulk_threshold} ? {product_price} * 0.9 : {product_price}` |

Mit csinálnak a példák:

- **Négyzetméterár:** minden termék a saját díját használja, akkor is, ha ugyanazt a kiegészítő csoportot használja több termék.
- **Beállítási díj:** a beállítási díj soronként egyszer jelentkezik, a darabonkénti költség pedig a mennyiséggel nő.
- **Minimális díj:** a kis rendelések a minimális díjat fizetik, a nagyobbak a kiszámolt díjat.
- **Szállítási súly:** a súly a vásárló által megadott méretektől és a termék anyagától is függ.
- **Szükséges egységek:** a kosárba kerülő mennyiség egész egységre (doboz, csomag, tekercs) kerekedik felfelé.
- **Mennyiségi kedvezmény:** minden termék a saját küszöbét adja meg, és a képlet a küszöbtől 10% kedvezményt ad.

## Más bővítmények címkéi

A címkéket ugyanúgy használd a **Képlet** mezőben, mint bármely más mezőcímkét. Amikor a vásárló kiválaszt valamit, a bővítmény behelyettesíti a hozzájuk tartozó értéket.

| Bővítmény | Címke | Mit ad | Példa |
| --- | --- | --- | --- |
| WooCommerce Bulk Variations (rácsos elrendezés kell hozzá) | `{total_variations}` | A vásárló által kiválasztott variációk összes száma. | `{total_variations} * 5`: variációnként 5 egység felár. |
| Bookings for WooCommerce | `{calculated_booking_cost}` | A kiválasztott foglalás teljes költsége. | `{calculated_booking_cost} * 0.1`: a foglalási költség 10%-a, például biztosításként. |
| Bookings for WooCommerce | `{num_units_int}` | A kiválasztott egységek száma (nap, hét). | `{num_units_int} * 15`: napi 15 egység díj, például eszközbérlésnél. |
| Bookings for WooCommerce | `{num_bookings}` | A kiválasztott mennyiség. | |
