# Kapcsolt elemek és kapcsolati meta mezők szűrése

> A JetEngine kapcsolatok szűrése: kapcsolt elemek szűrője a dinamikus címkével, és szűrés a kapcsolat meta mezője szerint SQL lekérdezéssel.

A JetEngine **Relations** (kapcsolatok) funkciójával egyéni bejegyzéstípusok, egyéni tartalomtípusok, felhasználók és taxonómiák köthetők össze. Ez a fejezet kétféle szűrést ír le: a kapcsolt elemek szűrését, és a kapcsolatok saját meta mezői szerinti szűrést. Előfeltétel: aktív JetEngine létrehozott kapcsolatokkal, és aktív JetSmartFilters; a szerkesztő Elementor, Gutenberg vagy Bricks lehet.

## Kapcsolt elemek szűrése

A példában két bejegyzéstípus között van kapcsolat: „Osztályok → Szolgáltatások”. A szolgáltatások listáját osztályok szerint szűrjük.

### A szűrő létrehozása

1. Nyisd meg az **Intelligens szűrők → Új hozzáadása** oldalt, és add meg a **Szűrő neve** mezőt.
2. Válaszd ki a többválasztós típust, a példában a **Kiválasztás** típust.
3. Ha hierarchikus szűrőt szeretnél, kapcsold be az **Is hierarchical** kapcsolót.
4. Az **Adatforrás** legyen **Bejegyzések**. Ha kell, add meg a helyőrzőt, és válaszd ki a bejegyzéstípust (a példában az „Osztályok”).
5. Az **Is Checkbox Meta Field** kapcsoló maradjon kikapcsolva. Az **Include/Exclude** mezőben kizárhatsz vagy bevonhatsz bejegyzéseket.
6. A **Query Variable** mezőben kattints a dinamikus címke ikonra, és válaszd a **JetEngine: filters children items list by parents IDs** (a gyermekek szűrése a szülők azonosítói alapján) vagy a **JetEngine: filters parents items list by children IDs** (a szülők szűrése a gyermekek azonosítói alapján) lehetőséget. A példában az első kell.
7. A megnyíló ablakban válaszd ki a kapcsolatot.
8. Az összehasonlító operátor maradjon **Equal (=)**, majd kattints az **Update** gombra.

### A lista és az oldal

1. Készíts listing elemet a szűrendő elemekhez (bejegyzéstípus, tartalomtípus, felhasználó vagy taxonómia). A tartalmat dinamikus widgetekkel vagy blokkokkal jelenítsd meg.
2. Az oldalon add hozzá a **Listing Grid** widgetet, és válaszd ki a listing elemet.
3. Add hozzá a **Kiválasztás** szűrő widgetjét, és válaszd ki a létrehozott szűrőt.
4. Tedd közzé az oldalt.

A nyilvános oldalon a legördülő lista valamelyik elemét kiválasztva a lista a hozzá kapcsolt (a példában gyermek) elemeket mutatja.

## Szűrés a kapcsolat meta mezője szerint

Ha a kapcsolatnak saját meta mezője van, az alapértelmezett szűrők nem érik el. Ilyenkor két egyéni SQL lekérdezés kell a JetEngine Query Builderében, a két lekérdezést pedig egy szűrő és egy listing köti össze.

### 1. A szűrő értékeit adó lekérdezés

1. Nyisd meg a **JetEngine → Query Builder** oldalt, és kattints az **Új hozzáadása** gombra.
2. Add meg a **Név** mezőt, a **Lekérdezés típusa** legyen **SQL/AI lekérdezés**.
3. A **Custom SQL Query** részben a **From table** a `jet_rel_default_meta` tábla legyen: ebből olvassa a lekérdezés a kapcsolat meta mezőinek értékét.
4. Ha a kapcsolat beállításaiban a **Register separate DB table** kapcsoló be van kapcsolva, külön tábla jön létre `jet_rel_81_meta` néven, ahol a 81 a kapcsolat azonosítója. Ilyenkor ezt a táblát válaszd. A kapcsolat azonosítója a kapcsolat szerkesztőoldalának URL-jében látható.
5. A **Where** részben adj hozzá egy feltételt: a **Column** a `meta_key`, a **Compare** az **Equal**, a **Value** pedig a kapcsolat meta mezőjének neve.
6. Ha a külön táblát nem használod, egy második feltétel is kell: a **Column** a `rel_id`, a **Compare** az **Equal**, a **Value** a kapcsolat azonosítója, a **Type** pedig **Numeric**.
7. Az előnézetben a `meta_value` oszlop tartalmazza a kapcsolat meta mezőjének értékét, amelyből a szűrő felépül. Mentsd a lekérdezést.

### 2. A szűrő

1. Nyisd meg az **Intelligens szűrők → Új hozzáadása** oldalt, és válaszd a szűrő típusát (a példában **Választógomb**).
2. Az **Adatforrás** legyen **JetEngine Query Builder**, és válaszd ki az előző lépés lekérdezését.
3. A **Property to get Value from** és a **Property to get Label from** mezőbe írd: `meta_value`.
4. A **Query Variable** mező is `meta_value` legyen.
5. Mentsd a szűrőt.

### 3. A találatokat adó lekérdezés

1. A Query Builderben vegyél fel egy újabb **SQL/AI lekérdezés** típusú lekérdezést.
2. Válaszd ki azt a táblát, amelyben a szűrendő elem tárolódik. Egyéni tartalomtípusnál ez a CCT táblája, bejegyzéstípusnál a `posts` tábla.
3. Kapcsold be a **Use Join** kapcsolót, a **Join Type** legyen **Inner Join**, és csatold a `jet_rel_default_meta` táblát (külön táblánál azt a táblát).
4. A **current table column** mezőben azt az oszlopot add meg, amely a kapcsolat szűrendő elemének felel meg. Ha az egyéni tartalomtípus a kapcsolat szülő eleme, ez a `parent_object_id`. Az **is equal to other table column** mező egyéni tartalomtípusnál a `_ID`, a `posts` tábla esetében az `ID`.
5. A **Where** részben vegyél fel feltételt: a `jet_rel_default_meta.meta_key` legyen **Equal** a kapcsolat meta mezőjének nevével. Így csak azok az elemek jönnek le, amelyeknek van értéke ebben a meta mezőben.
6. Ha a kapcsolat bejegyzéstípust használ, adj meg egy feltételt a bejegyzéstípusra is: a `posts.post_type` legyen **Equal** a bejegyzéstípus nevével.
7. Mentsd a lekérdezést.

### 4. A listing elem

1. Nyisd meg a **JetEngine → Listings** oldalt, és kattints az **Add New** gombra.
2. A **Listing source** legyen **Query Builder**, a **Query** mezőben válaszd ki az előbb létrehozott lekérdezést.
3. Add meg a listing nevét, válaszd ki a listing nézetét, majd kattints a **Create Listing Item** gombra.
4. A sablonban a **Dynamic Field** widgettel jelenítsd meg az adatokat. A lekérdezés mezőit az objektummezők listájának **Query** szakaszában találod, ezt kell választani. A kapcsolat meta mezőjének értéke a `meta_value` mezővel jeleníthető meg.

### 5. Az oldal

1. Add hozzá az oldalhoz a szűrő widgetjét és a **Listing Grid** widgetet.
2. A **Listing Grid** listingjének válaszd ki az előző lépésben létrehozott listing elemet.
3. Nyisd meg a nyilvános oldalt: a szűrőben kijelölt értékhez tartozó elem jelenik meg a **Listing Grid**ben.

A lekérdezésekről és a Query Builderről a JetEngine saját fejezetei írnak, a szűrők adatforrásáról az [Szűrők a Query Builder lekérdezéseiből](https://hub.hellowp.io/hu/plugins/jet-smart-filters/adatforras-query-builder/) fejezet.
