# Egyesített lekérdezés

> Az Egyesített lekérdezés beállításai és korlátai, valamint példa: kiemelt állások, a mai bejegyzések és a többi állás fizetés szerint egy Listing Gridben.

Az **Egyesített lekérdezés** típus több lekérdezés eredményét egyetlen lekérdezéssé fűzi össze. Használhatod például arra, hogy különböző feltételek szerint kiválasztott bejegyzéseket egyetlen Listing Gridben jeleníts meg.

## Beállítások

Az általános blokk (**Név**, **Leírás**, **Lekérdezés típusa**, **Egyéni lekérdezés-ID**, **Lekérdezés gyorsítótárazása**, **Gyorsítótár lejárata**, **REST API-végpont regisztrálása**) ugyanaz, mint a többi típusnál: lásd a [Lekérdezéskészítő áttekintése](https://hub.hellowp.io/hu/plugins/jet-engine/query-builder-attekintes/) fejezetet. A típusnál az **Egyesített lekérdezés** értéket válaszd.

![Az Egyesített lekérdezés beállításai](./kepek/query-builder-egyesitett-beallitasok.webp)

*Az Egyesített lekérdezés beállításai* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine-query&query_action=add)

A képen az **Egyesített lekérdezés** blokk látszik: a lekérdezés típusa, az ismétlődő elemek kizárása, az oldalankénti maximum és az egyesítendő lekérdezések listája.

| Beállítás | Mit csinál |
|---|---|
| **Lekérdezés típusa** | Az egyesítendő lekérdezések típusa. Csak azonos típusú lekérdezések egyesíthetők: bejegyzések bejegyzésekkel, kifejezések kifejezésekkel és így tovább. Jelenleg a bejegyzések, a kifejezések, a felhasználók és a hozzászólások támogatottak. |
| **Ismétlődő elemek kizárása** | Bekapcsolva az oldalon egy korábbi lekérdezésben már megjelent elemek kimaradnak az összes következő lekérdezésből. |
| **Max. elemek száma oldalanként** | Az egyesített lekérdezés oldalankénti legnagyobb elemszáma. Ha N-t adsz meg, legfeljebb N eredményt ad oldalanként: minden következő lekérdezésnél úgy csökken az elemszám, hogy az összeg ne haladja meg az N-et. Üresen minden beágyazott lekérdezés a saját beállítása szerint ad elemeket. |
| **Egyesítendő lekérdezések** | Az **Új lekérdezés hozzáadása** gomb minden kattintása egy legördülő listát ad, amelyből a megadott típusú lekérdezést választod. |

## Működési korlátok

- A lekérdezés nem működik megfelelően a JetSmartFilters **Indexer** beállításával. Az egyesített lekérdezés különböző lekérdezések eredményeit fűzi össze, ezért az Indexer nem tudja eldönteni, mely argumentumokkal számoljon.
- A lapozással gondok lehetnek. Mivel minden beágyazott lekérdezésnek más az oldalszáma, az összes oldal száma néha hibásan számolódik.

## Példa: kiemelt állások, mai állások, a többi fizetés szerint

A cél egy Listing Grid, amely előbb a kiemelt állásokat mutatja, utána a ma közzétett állásokat, végül a többit fizetés szerint csökkenő sorrendben. Ehhez három **Bejegyzések lekérdezése** típusú lekérdezést fűzünk össze (a példa bármely támogatott típusra alkalmazható). Elementor, a blokkszerkesztő vagy Bricks is használható.

### 1. Egyéni bejegyzéstípus előkészítése

A példában az „Állások” egyéni bejegyzéstípus áll az alapul (alapértelmezett bejegyzésekkel is működik). A **JetEngine → Bejegyzéstípusok** oldalon hozd létre (vagy szerkeszd), és add meg a nevét meg a slugját. A **Meta mezők** fülön vedd fel a szükséges mezőket (például fizetés, leírás), valamint egy **Kiemelt** nevű, **Switcher** típusú mezőt. Mentsd a típust, majd az állások szerkesztésekor töltsd ki a mezőket, és az egyik állásnál kapcsold be a kiemelést.

### 2. Listing sablon

A **JetEngine → Listings/Components** oldalon hozz létre listing elemet: a forrás **Posts**, a bejegyzéstípus az állások típusa, add meg a nevét és a nézetet (Elementor, Bricks, Timber/Twig vagy blokkok). A sablonban:

1. egy **Dynamic Link** widget **Permalink** forrással és `%title%` felirattal, hogy a cím az állás oldalára vigyen;
2. egy **Dynamic Field** a leíráshoz (**Meta Data** forrás);
3. egy **Dynamic Terms** widget a helyszín taxonómiához;
4. egy **Dynamic Field** a bejegyzés dátumával: a **Filter field output** kapcsolóval a „Format date” visszahívás, például `F j, Y` formátummal;
5. egy **Dynamic Field** a kiemelés mezőhöz: a „Switcher field values” visszahívással, a **Text if enabled** mezőbe a „Kiemelt” szöveggel, és a **Hide if value is empty** bekapcsolásával;
6. egy **Dynamic Field** a fizetéshez, a **Customize field output** kapcsolóval és a **Field format** mezőben a `€%s` formátummal.

Frissítsd a sablont.

### 3. A három lekérdezés

Mindhárom lekérdezés a **JetEngine → Lekérdezéskészítő** oldalon készül (**Új hozzáadása**), **Bejegyzések lekérdezése** típussal. Az **Általános** fülön mindháromnál add meg a bejegyzéstípust (az állásokét) és a közzétett állapotot.

1. **Kiemelt állások**: a **Meta lekérdezés** fülön új feltétel: a **Mező kulcsa/neve** a kiemelés mező neve (például `_promoted`), az **Összehasonlítás** **Egyenlő (=)**, az **Érték** `true`.
2. **Ma közzétett állások**: a **Dátumlekérdezés** fülön új feltétel: az **Utána** mezőbe „Today”, az **Összehasonlítás** **Egyenlő (=)**, az **Oszlop** **Post date**.
3. **Rendezés a többi állásra**: az **Általános** fülön az **Új rendezési paraméter hozzáadása** gombbal egy paraméter: a **Sorrend alapja** „numerikus metaérték”, a **Meta kulcs** a fizetés mező neve (például `_salary`), a **Rendelés** „A legmagasabb értékektől a legalacsonyabb értékekig”.

Mindegyiket mentsd a **Lekérdezés hozzáadása** gombbal.

### 4. Az egyesített lekérdezés

Hozz létre új lekérdezést „Egyesített lekérdezés állásokhoz” névvel, **Egyesített lekérdezés** típussal.

1. A **Lekérdezés típusa** maradjon **Bejegyzések**.
2. Kapcsold be az **Ismétlődő elemek kizárása** kapcsolót. Így egy kiemelt állás, amelyet ma tettek közzé, nem jelenik meg kétszer, és az első két lekérdezés elemei a harmadikban sem ismétlődnek.
3. Az **Új lekérdezés hozzáadása** gombbal vedd fel sorban a három lekérdezést: a kiemelteket, a mai közzétételeket, majd a rendezőt.
4. Mentsd a lekérdezést.

### 5. Listing Grid az oldalon

Az oldalon helyezz el Listing Grid elemet (Elementor widget, blokk vagy Bricks elem), és válaszd ki a listing sablont. A **Custom Query** fülön kapcsold be a **Use Custom Query** kapcsolót, és a **Custom Query** listából válaszd az egyesített lekérdezést. Közzététel után az oldalon először a kiemelt állás, utána a mai állások, végül a többi állás látszik fizetés szerint csökkenő sorrendben.
