# Szűrők a Lekérdezéskészítő forrásával (JetSmartFilters)

> Szűrő opcióinak feltöltése lekérdezésből, és a Range szűrő minimum- és maximumértékeinek lekérése lekérdezésből.

Két feladatot oldhatsz meg a Lekérdezéskészítő és a JetSmartFilters együttes használatával: a szűrő opciói jöhetnek lekérdezésből, és a Range szűrő határértékei is.

Követelmény: JetEngine, JetSmartFilters, és Elementor (ingyenes), blokkszerkesztő vagy Bricks.

## Szűrő opciói lekérdezésből

A példa a termékkategóriákat névsorba rendezi (az alapértelmezett, létrehozás szerinti sorrend helyett), és a „Nem kategorizált” kategóriát kihagyja.

### 1. A lekérdezés

1. A **JetEngine → Lekérdezéskészítő → Új hozzáadása** oldalon add meg a nevet, a típus legyen **Kifejezések lekérdezése**.
2. Az **Általános** fülön a **Taxonómia** legyen „Termékkategóriák”, az **Order By** „Name”, az **Order** „From lowest to highest values”.
3. Az **Include/Exclude** fülön az **Exclude** mezőbe írd a „Nem kategorizált” kategória azonosítóját.
4. Kattints a **Lekérdezés hozzáadása** gombra.

### 2. A szűrő

1. A **JetSmartFilters → Új hozzáadása** oldalon válassz szűrőtípust: **Radio**, **Checkbox**, **Select** vagy **Visual**, az adatforrás pedig legyen **JetEngine Query Builder**.
2. A **Select Query** mezőben válaszd ki a lekérdezést.
3. A **Property to get Value from** mezőbe azt a tulajdonságot írd, amelyik a szűrés értéke. Kifejezéseknél ez a kifejezés azonosítója, a neve `term_id`. A pontos tulajdonságnevet a lekérdezésben az **Eredmények előnézete** kapcsolóval nézheted meg.
4. A **Property to get Label from** az opció felirata az oldalon: itt a `name`.
5. A **Query Variable** mezőbe a szűrendő taxonómia kerül. A mellette lévő **Dynamic Tag** gombbal válaszd a **Taxonomy** lehetőséget, és ott a „Termékkategóriák” taxonómiát.
6. Töltsd ki a **Filter Labels** részt, és kattints a **Frissítés** gombra.

### 3. Az oldalon

1. A szerkesztőben tedd be a szűrő widgetjét (a példában Checkboxes Filter), és a **Select filter** mezőben válaszd ki az új szűrőt.
2. A **This filter for** mezőben válaszd a **JetEngine** szolgáltatót, mert Listing Gridet szűrsz.
3. Tegyél az oldalra egy **Listing Grid** widgetet is.

Az előlapon az opciók ábécésorrendben vannak, és a szűrő a kiválasztott termékkategória szerint szűri a termékeket.

## A Range szűrő minimuma és maximuma lekérdezésből

A Range szűrő határértékei egy lekérdezés eredményéből is jöhetnek, például a lekérdezett termékek legalacsonyabb és legmagasabb áraiból.

Követelmény: egy PHP-kódrészletek beillesztésére alkalmas bővítmény (például Code Snippets), WooCommerce termékek árral, JetEngine listázási sablonnal a termékadatokhoz, és JetSmartFilters.

### 1. A kódrészlet

A **Snippets → Új hozzáadása** oldalon hozz létre egy kódrészletet (például „JetEngine Query Source for Range Filter” néven), amelyik egy új callbacket ad a Range szűrőhöz, hogy a minimumot és a maximumot egy JetEngine-lekérdezésből kérje le. Mentsd és kapcsold be: **Save and Activate**.

### 2. A lekérdezés

1. A **Lekérdezéskészítőben** hozz létre **Bejegyzések lekérdezése** típusú lekérdezést. Az **Egyéni lekérdezés-ID** legyen például `price-range`: ez köti össze a lekérdezést, a szűrőt és a szolgáltatót.
2. Az **Általános** fülön a bejegyzéstípus legyen „Termékek”.
3. A **Taxonómiai lekérdezés** fülön (opcionális) szűkíthetsz kategóriára: **Taxonomy** „Termékkategóriák”, **Field** „Slug”, **Terms** például `business`.
4. Mentsd a lekérdezést.

### 3. A szűrő

1. A **JetSmartFilters → Új hozzáadása** oldalon a szűrőtípus legyen **Range**.
2. A **Get min/max dynamically** listában válaszd a **Get from JetEngine Query** lehetőséget (a kódrészlet aktiválása után jelenik meg), majd a **Select Query** listában a lekérdezést.
3. A **Query Variable** mezőbe írd: `_price`. Ez a WooCommerce meta kulcsa, amelyben az ár tárolódik. Más numerikus mezőhöz a saját meta kulcsát add meg.
4. Töltsd ki a **Filter Labels** részt, és frissítsd.

### 4. Az oldalon

1. Tedd be a **Range Filter** widgetet. A **Select filter** mezőben válaszd ki a szűrőt, a **This filter for** listában a **JetEngine** lehetőséget, a **Query ID** pedig legyen `price-range`.
2. Tedd be a **Listing Grid** widgetet, válaszd ki a listázási sablont (az oszlopszámot beállíthatod).
3. A **Custom Query** fülön kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki a lekérdezést.
4. A **Speciális** fülön a **CSS ID** mezőbe ugyanazt az azonosítót írd: `price-range`.
5. Tedd közzé az oldalt.

Az előlapon a csúszka értékeinek módosításakor a Listing Grid a megadott ártartományba eső termékeket mutatja.
