# Távolság megjelenítése felhasználók, kifejezések és CCT-elemek között

> A megadott címtől mért távolság kiírása a Dynamic Fielddel felhasználóknál, taxonómia-kifejezéseknél és CCT-elemeknél, földrajzi lekérdezéssel és szűrővel.

A JetEngine a Dynamic Field widgettel ki tudja írni, milyen messze van egy felhasználó, egy taxonómia-kifejezés vagy egy CCT-elem egy megadott címtől. A három eset felépítése azonos, csak a kódrészlet, a lekérdezés típusa és a listázás forrása különbözik.

Előfeltétel: Elementor, blokkszerkesztő vagy Bricks; aktív JetEngine bekapcsolt **Térképes listák** modullal; aktív JetSmartFilters.

Közös tudnivaló: ha a cím **Szöveg** típusú metamezőben van, vedd fel a mezőt (vagy a szélességi és hosszúsági mezőt) a **JetEngine → JetEngine → Térképek beállításai** fül **Meta fields to preload** (előre betöltendő metamezők) mezőjébe. A **Térkép** típusú mezőhöz ez nem kell.

## Felépítés lépésről lépésre

### 1. Kódrészlet

Add hozzá a kódot a gyermektéma `functions.php` fájljához, vagy egy kódrészlet-kezelő bővítményhez (például a Code Snippets). Mentsd és aktiváld.

A típustól függően ez a kód kell:

```php
// Felhasználók
add_filter( 'jet-engine/maps-listings/add-distance-field/users', '__return_true' );

// Taxonómia-kifejezések
add_filter( 'jet-engine/maps-listings/add-distance-field/terms', '__return_true' );

// Egyéni tartalomtípus
add_filter( 'jet-engine/maps-listings/add-distance-field/custom-content-type', '__return_true' );
```

### 2. Lekérdezés a Lekérdezéskészítőben

1. A **JetEngine → Lekérdezéskészítő** oldalon kattints az **Új hozzáadása** gombra, és add meg a lekérdezés nevét.
2. Állítsd be a típust:
   - felhasználóknál **Users Query**, a **User Role** fülön szükség szerint a szerepkört (például **Subscriber**),
   - kifejezéseknél **Terms Query**, az **General** fülön a taxonómiát,
   - CCT-nél **Custom Content Type Query**, és a **From Content Type** listában a CCT-t.
3. Nyisd meg a **Geo Search** részt (CCT-nél ez a tartalomtípus lekérdezés szakaszán belül van). A térképen jelöld ki a keresés középpontját, vagy írd be a koordinátákat.
4. Az **Address Field** mezőbe írd be annak a metamezőnek a nevét, amelyben a cím van (vagy két mezőét, ha a szélességi és hosszúsági fok külön mezőben van). Ez lehet **Szöveg** vagy **Térkép** típusú mező, például `user_address`, `address_city` vagy `location_address`.
5. Add meg a **Distance** értékét, amely a középpont körüli keresési sugár, és az egységet (**Miles** vagy **Kilometers**).
6. Az oldal tetején kapcsold be a **Preview results** kapcsolót. Ha az előnézet találataiban megjelenik a `geo_query_distance` érték, a lekérdezés működik.
7. Kattints a lekérdezés hozzáadására.

### 3. Szűrő a JetSmartFiltersben

1. Menj a **Smart Filters → Add New** oldalra, és nevezd el a szűrőt (például „Hely és távolság”).
2. A **Filter Settings** részben a **Filter Type** legyen **User Geolocation** vagy **Location & Distance**. Az utóbbival a látogató kézzel írja be a címet és választja ki a sugarat.
3. Töltsd ki a **Filter Labels** részt, és frissítsd a szűrőt.

### 4. Listázási elem

1. A **JetEngine → Listázások/komponensek** oldalon kattints az **Új elem hozzáadása** gombra.
2. A forrás típustól függ: **Users**, **Terms** (és a **From taxonomy** listában a taxonómia) vagy **Egyedi tartalomtípus** (a CCT kiválasztásával). Add meg a nevet és a nézetet (például **Elementor**), és hozd létre.
3. A szerkesztőben a **Dynamic Field** widgettel írd ki a szükséges adatot, például a felhasználó nevét.
4. Egy második **Dynamic Field** widgetben a forrás maradjon **Post/Term/User/Object Data**, az **Object field / Meta field / Repeater key / Component prop** mezőbe pedig írd be: `geo_query_distance`.
5. Kapcsold be a **Filter field output** kapcsolót, és a **Callback** mezőben válaszd a **Format number** értéket. Így a távolság két tizedesjegyre rövidül (a **Decimal points** alapértéke 2).
6. Kapcsold be a **Customize field output** kapcsolót, és a **Field format** mezőbe írd: `Távolság: %s km`. A `%s` helyére a számérték kerül.
7. Tedd közzé a listázási elemet.

### 5. Elhelyezés az oldalon

1. Nyiss meg egy oldalt (vagy hozz létre újat) a szerkesztőben.
2. Add hozzá a **Listing Grid** vagy a **Map Listing** widgetet, és a **General** fülön válaszd ki az imént készített listázást.
3. A **Custom Query** fülön kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki az elkészített lekérdezést.
4. Adj hozzá egy **Location and distance** vagy **User Geolocation** widgetet. A **Select filter** mezőben válaszd ki a szűrőt, a **This filter for** mezőben pedig a **JetEngine** szolgáltatót.
5. Opcionálisan a **Distance List** fülön megváltoztathatod a szűrőben választható távolságokat, például 100, 200 és 500 km-re.
6. Tedd közzé az oldalt.

## Az eredmény

A frontenden a szűrőben írd be a címet, és válaszd ki a sugarat a mellette lévő legördülő listában. A lista csak a megadott sugáron belüli felhasználókat, kifejezéseket vagy CCT-elemeket mutatja, a Dynamic Field pedig a távolságot is kiírja.
