# Makrók

> A JetEngine makrói: hol használhatók, a makrógenerátor, és az összes makró jelentése, a csatolmány-hivatkozáshoz kapcsolódó fájl-URL makróval együtt.

A makró egy szövegrészlet, amelyet a JetEngine a környezettől függő értékkel helyettesít. A makrókkal lekérdezhetsz és kiírhatsz dinamikus adatokat. A csatolmány-hivatkozás visszahívás mellett a **Customize field output** mezőben (Dynamic Field) is használhatod őket. Ha csak a fájl URL-jére van szükséged hivatkozás nélkül, a `%media-field|file_url_by_id%` makró a csatolmány linkjét adja vissza (lásd lent).

## Hol használhatók

A legtöbb makró globális, ezek a következő helyeken működnek:

- a Lekérdezéskészítőben (Query Builder),
- a dinamikus láthatóság beállításaiban,
- a Dynamic Link elem **Label** és **Query Arguments** mezőjében,
- a Dynamic Field elem **Customize field output** mezőjében.

Néhány makró csak meghatározott helyen működik: a JetBooking iCal-szinkronizálásában, a Dynamic Repeater elemben (ismétlő mezők), az űrlapok **Send Email** műveletében. Ezeket külön szakasz írja le lent.

Minden makrónak van törzse, környezeti értéke (context) és tartaléka (fallback). A kézzel beírható helyekre érdemes a **JetEngine → JetEngine → Makrógenerátor** lapon legeneráltatni a makrót: válaszd ki a makrót, a kontextust, add meg a tartalékértéket, majd másold ki az eredményt.

![A JetEngine vezérlőpultjának Makrógenerátor lapja](./kepek/visszahivas-makrogenerator.webp)

*A JetEngine vezérlőpultjának Makrógenerátor lapja* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine)

A képen a **Makrók** lista, a **Kontextus**, a **Tartalékérték** és az alul megjelenő generált makró látszik.

Ugyanezeket a makrókat a **Dynamic Tags** gomb is felkínálja. Elementorban a „Macros” dinamikus címke csak a JetEngine-elemekben (például Listing Grid, Dynamic Link) és a dinamikus címkét támogató helyeken használható. Blokkszerkesztőben a **Dynamic Tags** gombbal a **Content → Data Source** lapon válaszd a „Custom Data” forrást, a **Select data to show** lista tartalmazza a makrókat.

> **Figyelem**
>
> A dinamikus láthatóságban és a Lekérdezéskészítő egyedi lekérdezéseiben a makrót csak a **Dynamic Tags** gombbal választhatod ki. A kézzel beírt makró itt nem működik.

## Gyakori makrók

| Makró | Mit ad vissza |
| --- | --- |
| `%current_categories%` | Az aktuális bejegyzés kategóriái (csak az alapértelmezett WordPress-kategóriák). Kategória szerint kapcsolódó bejegyzésekhez a Bejegyzéslekérdezés Tax Query lapján a **Terms** mezőbe tedd. |
| `%current_tags%` | Az aktuális bejegyzés címkéi (csak az alapértelmezett címkék). |
| `%current_terms%` vagy `%current_terms|taxonomy_slug%` | Az aktuális bejegyzés kategóriái; az űrlap második alakjában megadhatod a taxonómia azonosítóját. Egyedi taxonómiánál használd. |
| `%queried_term%` | A kategória azonosítója annak archívumoldalán vagy kategória-listingelemben. |
| `%current_id%` | Az aktuális bejegyzés azonosítója. Bejegyzéslekérdezésben az aktuális bejegyzés bevonására vagy kizárására használható. |
| `%title%` | Az aktuális bejegyzés címe. A Dynamic Link **Label** mezőjébe írva kattintható lesz. |
| `%object_id%` | Az aktuális objektum azonosítója (Dynamic Link **Label**). |
| `%field_value%` | A Dynamic Link forrásaként beállított mező értéke. Ha a forrás URL-t tartalmazó meta mező, ez a hivatkozás. |
| `%jet_engine_field_name|meta-field|field_name%` | A meta mező kulcsneve. A `meta-field` helyére a tényleges mezőnevet írd. |
| `%jet_engine_field_name|meta-field|field_value%` | Ugyanaz, de a mező értékét adja. |
| `%current_meta|field-name%` | Az aktuális bejegyzés megadott meta mezőjének értéke. Azonos meta értékű bejegyzések listázására is használható. |
| `%current_meta_string|field-name%` | Tömböt tároló meta mező vesszővel elválasztott értékei (többszörös lista, tömbként mentett jelölőnégyzet). A Posts meta mezőből is lehet vele bejegyzéseket lekérdezni. |
| `%today%` | A mai dátum időbélyegként. |
| `%str_to_time|datetime-string%` | A szöveget időbélyeggé alakítja, például `%str_to_time|10 September 2000%` vagy `%str_to_time|+ 1 day%` (a holnapi nap). |
| `%current_date|format%` | A mai nap a megadott formában. |
| `%option_value|name_of_option::meta_field_name%` | Egy beállítási oldal meta mezőjének értéke. A `name_of_option` helyére a beállítási oldal azonosítóját írd (az oldal URL-jében találod). |
| `%query_var|field-name%` | Az URL paramétere, például a `?s=books` címből a `books` értéket a `%query_var|s%` adja. |
| `%query_results|ID|format%` | Egy egyedi lekérdezés eredménye. |
| `%query_count|ID|returned_count%` | Egy egyedi lekérdezés eredményeinek száma. |
| `%shortcode_result|[shortcode]%` | A megadott shortcode eredménye. |
| `%jfb_record_field|field-name%` | A JetFormBuilder rekordok lekérdezésének listingsablonjában az űrlapmező rögzített értéke. Tömbértéknél add meg az útvonalat is, például `field_name/0` vagy `field_name/1/nested_key`. |

### A %current_date formátumai

- `day`: a hónap napja (május 16-án `16`).
- `day_of_week`: a hét napjának neve.
- `month`: a hónap neve.
- `year`: négyjegyű évszám.
- `custom`: saját formátum, például `%current_date|custom|F j, H:i%` eredménye „May 16, 13:11”.

### A %query_var használata űrlap után

Ha az űrlap **Redirect to Page** művelete a bejelölt mezőket átadja az átirányítási URL-ben (**Add query arguments to the redirect URL**), a cél oldalra tegyél egy Dynamic Link elemet, alapbeállítással, és a **Label** mezőbe írd a `%query_var|mezőnév%` makrót. Dynamic Field elemmel a **Query Variable** forrást is használhatod. Az űrlap elküldése után az oldal megjeleníti a beírt adatot.

### A %query_results formátumai

- `ids`: az elemek azonosítóinak vesszővel elválasztott listája, például a 6-os lekérdezésnél `%query_results|6|ids%`. Bejegyzéslekérdezés **Post In** mezőjébe téve egy másik lekérdezés találatait vonhatod be. Nem csak a Posts Query-vel működik.
- `all`: a találatok objektumainak tömbje, például `%query_results|6|all%`.
- `selected`: a megadott tulajdonságok listája, hasznos SQL-lekérdezésnél. A `%query_results|6|selected|ID%` az `ID` oszlop értékeit adja vesszővel elválasztva.

### A %query_count értékei

- `total`: az összes találat száma (`%query_count|5|total%`).
- `visible`: az aktuális oldalon látható találatok száma (`%query_count|5|visible%`).

## Kapcsolatok

Az alábbi makrók csak a régi típusú kapcsolatokkal működnek (azokkal, amelyek a JetEngine 2.11.0 frissítése előtt készültek). A `post-type-slug` helyére a bejegyzéstípus azonosítóját írd, például `events`.

| Makró | Mit csinál |
| --- | --- |
| `%related_children_from|post-type-slug%` | Csak a gyermek kapcsolódó bejegyzéseket jeleníti meg. A Listing Grid elem Bejegyzéslekérdezésében, **Posts Parameters** típusú elemként add hozzá. |
| `%related_parents_from|post-type-slug%` | Csak a szülő kapcsolódó bejegyzéseket jeleníti meg, ugyanígy. |
| `%get_grandparent|post-type-slug%` | Két meglévő kapcsolatot köt össze, és a nagyszülő bejegyzéseket jeleníti meg. Például Országok, Kontinensek és Túrák esetén a Kontinensek és Túrák között hozhatsz létre nagyszülői kapcsolatot. |
| `%get_grandchild|post-type-slug%` | A fordítottja: az unoka bejegyzéseket jeleníti meg. |

## Felhasználók

| Makró | Mit ad vissza |
| --- | --- |
| `%author_id%` | Az aktuális bejegyzés szerzőjének azonosítója. |
| `%queried_user_id%` | A lekérdezett felhasználó azonosítója a Profile Builder oldalakon és a felhasználói listingben; máshol az aktuális felhasználóé. |
| `%current_user_id%` | A bejelentkezett felhasználó azonosítója, például a fiókoldalon a saját bejegyzések listájához. |
| `%current_user_meta|field-name%` | Az aktuális felhasználó megadott meta mezőjének értéke. |

## Adattárolók (Data Store)

A `store-slug` helyére az adattároló általad megadott azonosítóját írd.

| Makró | Mit ad vissza |
| --- | --- |
| `%get_store|store-slug%` | Az aktuális felhasználó által az adattárolóhoz adott elemek azonosítói. |
| `%store_count|store-slug%` | Az aktuális felhasználó adattárolójában lévő elemek száma. |
| `%get_users_for_store_item|store-slug|context%` | Csak felhasználói tárolónál működik: azoknak a felhasználóknak az azonosítói, akik az adott elemet a saját tárolójukba tették (például a követők). |

A `context` értékei:

- `post`: alapértelmezett, az aktuális bejegyzés azonosítóját keresi (például a bejegyzést kedvelő felhasználók).
- `user`: az aktuális felhasználó azonosítóját keresi (például az ő követői).
- `queried_user`: a lekérdezett felhasználó azonosítóját (például a szerzői archívumban vagy a Profile Builder felhasználói oldalán).
- `author`: az aktuális bejegyzés szerzőjét (például szerzői dobozban).

## Egyedi tartalomtípus (CCT)

`%current_field|field_key%`: a CCT listingelemben a megadott mező értékét adja. Ha nem adsz meg mezőt, az elem azonosítóját adja vissza.

## WooCommerce

Ezek a makrók telepített és aktív WooCommerce esetén érhetők el. Egy részük a termék listingelemében és egyedi oldalán használható, más részük a Lekérdezéskészítő WC Product Query típusában.

| Makró | Mit ad vissza |
| --- | --- |
| `%add_to_cart_text%` | A termék „Kosárba” gombjának szövege (például „Kosárba”, „Tovább”). A Dynamic Link **Label** mezőjébe téve, ha a forrás „Add to Cart”, kosárba helyező gombként működik. |
| `%wc_product_title%` | A termék címe. A `%title%` makró vagy a „WooCommerce Product Field” dinamikus címke is használható helyette. |
| `%wc_get_products_in_cart%` | A kosárban lévő termékek azonosítói; a WC Product Query **Include** mezőjében használható. |
| `%wc_get_products_on_sale%` | A jelenleg akciós termékek azonosítói. |
| `%wc_purchased_products%` | A bejelentkezett felhasználó korábban megvásárolt termékei. |

## JetAppointment

Ezek a JetAppointment bővítményhez tartoznak, a JetFormBuilder űrlapok vagy a JetEngine Forms (régi) **Send Email** utólagos műveletében jelenítik meg az időpontfoglalás adatait.

- `%service_title%`, `%provider_title%`: a szolgáltatás és a szolgáltató neve.
- `%service_link%`, `%provider_link%`: hivatkozás a szolgáltatásra és a szolgáltatóra.
- `%post-field|post_title_by_id%`: a bejegyzés címe; a `post-field` helyére az űrlapmező neve kerül.
- `%appointment_start%`, `%appointment_end%`: az időpont kezdete és vége. Formátum adható meg, például `%appointment_start|format_date(F j, Y g:i)%`.
- `%user_local_time%`, `%user_local_date%`, `%user_timezone%`: a felhasználó időzónájában megadott idő, dátum és maga az időzóna (például „America/Vancouver”), ha az időzónakezelés be van kapcsolva.
- `%appointment_price%`: a lefoglalt időpont ára.
- `%appointmens_list%` … `%appointmens_list_end%`: több foglalás listája, ha a többszörös foglalás be van kapcsolva. A két makró közé írt szöveg és makrók minden foglalásnál megismétlődnek:

```text
%appointmens_list%
Appointment Start: %appointment_start|format_date(F j, Y g:i)%
Appointment  End: %appointment_end|format_date(g:i)%
%appointmens_list_end%
```

- `%appointment_meta|_cancel_url%`: a lemondási hivatkozás.

## JetBooking

Ezek a makrók csak telepített és aktív JetBooking mellett jelennek meg. Egy részük az iCalendar-sablonban használható (**Foglalások → Naptárak**), a többi dinamikus címkével Elementorban és a blokkszerkesztőben, és mind használható a Lekérdezéskészítőben.

| Makró | Mit ad vissza |
| --- | --- |
| `%booking_accommodation_status|available-label|pending-label|reserved-label%` | A foglalási példány állapotát a következő hét napra nézve. Teljesen foglalt időszakra „reserved”, részleges elérhetőségre „pending” vagy „available soon” (a pontos szabad nappal). A dátum formátuma a **Beállítások → Általános** lapon megadott. A három címkét te adhatod meg. |
| `%booking_column|column-name%` | A foglaláshoz felvett további oszlop értéke (például „guest”). Az iCalendar-sablonban használható. |
| `%booking_cancel_url%` | Az adott foglalás lemondási hivatkozása. |
| `%booking_data|booking-data-clarification%` | Foglalási adat: azonosító, példány, rendelésazonosító, felhasználóazonosító, e-mail-cím, érkezési és távozási dátum és idő. A dátum és idő típusoknál a **Data Format** választható: **Plain** (egységes formátum) vagy **Readable** (olvasható, megadható formátummal). |
| `%booking_price_per_day_night%` | Az egység napi vagy éjszakai ára, a foglalási időszak beállítása szerint. |
| `%booking_status%` | A foglalás belső állapota. |
| `%booking_unit_title%` | Az egység neve, ha meg van adva. |
| `%booking_units_count%` | A még foglalható egységek száma (például „2 szoba maradt”). Használható egyedi oldalon, listingben és felugró ablakban. |
| `%bookings_count|start-date|end-date%` | A példányra az adott időszakban leadott foglalások száma. A dátumokat `Y-m-d H:i:s` vagy `Y-m-d` formában add meg. |

A `%booking_price_per_day_night%` további választható beállításai:

- **Shown Price**: **Default** (az árbeállítás-lap „Price per 1 day/night” mezője), **Min Price** vagy **Max Price** (az alap-, szezonális és hétvégi árakból számolva), **Prices Range** (a minimum és maximum közti sáv).
- **Price Type**: **Static**, vagy **Dynamic**, amely a kiválasztott érkezési és távozási dátum szerint számol újra. A dinamikus csak akkor működik, ha az oldalon foglalási űrlap van.
- **Currency Sign** és **Currency Sign Position**: egyedi pénznemjel, és hogy az ár előtt vagy után áll.

## JetSmartFilters

A **JetSmartFilters Query** makró az aktív szűrők lekérdezéséből adja vissza a kiválasztott értéket. Fejlett SQL-lekérdezésekben vagy a szűrhető listingek dinamikus láthatóságában használható. A makrógenerátor **Makrók** listájából választhatod ki. Beállításai:

- **Type**: a szűrőlekérdezés melyik részét nézze. **Plain Query Var**: egy felső szintű paraméter (például `post_type`, `author`, `post__in`); **Taxonomy**: a kiválasztott kategóriák a `tax_query` felső szintjéről, a taxonómia azonosítójával; **Date**: dátumfeltételek a `date_query`-ből; **Meta field**: érték a `meta_query`-ből, a meta kulcs szerint.
- **Variable Name**: a keresett kulcs. Plain Query Var-nál a paraméter neve, Taxonomy-nál a taxonómia azonosítója, Meta field-nél a meta kulcs; Date típusnál hagyd üresen.
- **Date Variable**: Date típusnál „Before” vagy „After”: a megadott dátum előtt vagy után közzétett elemek.
- **Result Format**: **Plain** (nyers érték) vagy **Prepare for SQL** (az SQL-be illesztéshez előkészített érték).
- **Context** és **Fallback**: ugyanaz, mint minden makrónál.

A JetSmartFilters SEO-szabályaihoz két makró készült: a **JetSmartFilters SEO Description** az aktuálisan alkalmazott szűrők alapján generált SEO-leírást, a **JetSmartFilters SEO Title** a szűrt oldal SEO-címét adja. Dinamikus meta leírásokhoz és oldalcímekhez használhatod őket szűrt archívumoknál.

## Ismétlő mezők (Dynamic Repeater)

Ezek a makrók a Dynamic Repeater elem **Item Format** mezőjében működnek. A mezőnevek (`media-field`, `post-field`, `date-field` stb.) helyére a tényleges meta kulcsot írd.

| Makró | Mit csinál |
| --- | --- |
| `%name%` | Az ismétlőben lévő mező tartalma. A `name` helyére a meta kulcs kerül (például `%text%`), HTML-jelölőkkel (`<span>`, `<div>`) együtt használható. |
| `%media-field|img_url_by_id%` | A kép URL-je. Képként: `<img src="%media-field|img_url_by_id%">`. A mező értéke „Media ID” legyen; ha „Media URL”, a `%name%` makrót használd. |
| `%gallery-field|img_gallery_grid%` | Az ismétlő galéria alsó mezőjének képei rácsban. |
| `%post_id|post_url_by_id%` | A bejegyzés webcíme azonosító alapján (ha nem többszörös választású a Posts mező). |
| `%date-field|format_date%` vagy `%date-field|format_date(F j, Y)%` | A dátum formázva, például `format_date(d)` vagy `format_date(h)`. |
| `%media-field|img_alt_by_id%` | A kép alternatív szövege. |
| `%media-field|file_url_by_id%` | A csatolmány (fájl) webcíme. Ezt a makrót használhatod, ha csak az URL kell a **Get attachment file link by ID** visszahívás nélkül. |
| `%post-field|post_title_by_id%` | A bejegyzés címe azonosító alapján (egyes választású Posts mezőnél). |
| `%post-field|post_titles_by_ids%` | Több bejegyzés címe (többszörös választású Posts mezőnél). |
| `%post-field|post_link_by_id%` | A bejegyzés címe hivatkozásként (egyes választású Posts mezőnél). |
| `%checkbox-field|render_acf_checkbox%` | Az ACF jelölőnégyzet-mező értéke. A JetEngine mezőjénél is működik, ha a **Save As Array** be van kapcsolva. |
| `%repeater-field|embed_url%` | Az URL tartalmának beágyazása, például videó. Az URL a szöveges meta mezőben van; a „Media URL” formátumú média mezőnél is működik. |
| `%term-field|term_title_by_id%` | A kategória neve azonosító alapján. |
| `%term-field|term_titles_by_ids%` | Több kategória neve azonosító alapján. |

> **Megjegyzés**
>
> A két bejegyzéscímes (`post_title_by_id`, `post_titles_by_ids`) és a két kategórianeves makrót mindig párban illeszd be, mert a felhasználó egy vagy több elemet is kiválaszthat.

## Makrók az űrlapok e-mail küldésében

A JetFormBuilder vagy a JetEngine Forms modul **Send Email** utólagos műveletének tartalmában használhatók.

| Makró | Mit csinál |
| --- | --- |
| `%field-name%` | Az űrlapmező értéke, például a `text` nevű szöveges mezőé `%text%`. Rádiógomb, lista és jelölőnégyzet mezőkkel is működik. |
| `%date-field|format_date%`, `%date-field|format_date(F j, Y)%` | A dátummező formázott értéke. Az értesítési beállításoknál a mező a WordPress alapértelmezett dátumformátumát veszi át. |
| `%media-field|img_url_by_id%` | A kép URL-je. A kép megjelenítéséhez HTML-ben: `<img src="%media-field|img_url_by_id%">`. A mezőben az „Attachment ID” értéket válaszd; több kép feltöltésekor az „Attachment URL” kell. |
| `%media-field|file_url_by_id%` | A csatolmány webcíme. |
| `%post-field|post_title_by_id%` | A bejegyzés címe azonosítóból. |
| `%post-field|post_titles_by_ids%` | Több bejegyzés címe. Ha csak egy bejegyzés van kiválasztva, üres értéket ad, ezért a két makrót párban használd. |
| `%post-field|post_link_by_id%` | A bejegyzés címe hivatkozásként. |
| `%post_field|post_url_by_id%` | A bejegyzés webcíme. |
| `%checkbox-field|render_acf_checkbox%` | A jelölőnégyzet mezőben kiválasztott érték. |
| `%term-field|term_title_by_id%`, `%term-field|term_titles_by_ids%` | Egy, illetve több kategória neve. A második egyetlen kiválasztott elemnél üres, ezért a kettőt együtt használd. |

Az ismétlő mezőket a JetEngine űrlapok külön nem tudják elküldeni. Használd a `%name%` makrót, de a „Repeatable Fields Group Start” típusú mező nevével.
