# Egyedi vezérlők és oszlopok a kapcsolódó elemekhez

> Extra mezők az új kapcsolódó elem létrehozó ablakában, és saját oszlopok a kapcsolódó elemek táblájában JetEngine-horgokkal.

A kapcsolódó elemek létrehozó ablaka alapból csak a címet kéri. A JetEngine horgaival (hook) további mezőket adhatsz hozzá, és a kapcsolatkezelő táblába saját oszlopokat is tehetsz. A kódot a témád `functions.php` fájljába (**Megjelenés → Témaszerkesztő**, **Téma funkciói**) vagy egy saját bővítménybe kell beilleszteni.

> **Figyelem**
>
> A kód beillesztése előtt készíts biztonsági mentést, vagy próbáld ki egy tesztoldalon. Hiba esetén így visszaállíthatod a weboldalt.

Előfeltétel: aktív JetEngine, egy létrehozott kapcsolat, és a bővítendő bejegyzéstípus metamezője.

## Egy értékű mező (szöveg, média, dátum)

Az **Új … hozzáadása** ablakhoz a bejegyzések kapcsolatánál a `jet-engine/relations/types/posts/create-fields` horog ad mezőt, és a beírt adatot a kódnak el is kell mentenie a bejegyzéshez. A horog neve az adat típusától függ:

| Objektum | Horog |
| --- | --- |
| Bejegyzés | `jet-engine/relations/types/posts/create-fields` |
| Kifejezés | `jet-engine/relations/types/terms/create-fields` |
| Felhasználó | `jet-engine/relations/types/mix/create-fields/users` |

A kód négy módosítható elemet tartalmaz:

- a bejegyzéstípus slugja, amelyhez a mezőt adod (például `tour`);
- a metamező neve, ahogy a létrehozásakor megadtad (például `_duration-time`);
- a felugró ablakban megjelenő felirat (például „Duration Time”);
- a mező típusa az ablakban. Elérhető értékek: `text`, `media`, `date`, `time`, `textarea`, `datetime-local`.

A kód mentése után (**Fájl frissítése**) nyisd meg a szülő bejegyzést, kattints az **Új … hozzáadása** gombra: az ablakban megjelenik az új mező. Töltsd ki, és add hozzá az elemet. Az új elem megjelenik a listában, és a **Szerkesztés** gombbal megnyitva a metamező ki van töltve. Médiamezőnél a „Select or upload image” gombbal tölthetsz fel képet közvetlenül az ablakban.

CCT elemeknél nincs szükség kódra: ott a kapcsolat **Létrehozáshoz használt mezők** beállítása adja a mezőket (lásd: [Kapcsolatok áttekintése](https://hub.hellowp.io/hu/plugins/jet-engine/kapcsolatok-attekintes/)).

## Több értékű mező (jelölőnégyzet, választó, rádiógomb)

A `checkbox`, `select` és `radio` típus hasonló kóddal adható hozzá. A kód első fele a mezőt hozza létre, ezek a módosítható elemei:

- a horog (a fenti táblázat szerint);
- a bejegyzéstípus slugja;
- a metamező értéke (például `included`) és a felirata az ablakban;
- a mező típusa (`checkbox`);
- az opciók tömbje: minden opcióhoz érték és megjelenő felirat tartozik (például `accommodation` / „Accommodation”).

A kód második fele elmenti a kipipált értékeket.

> **Megjegyzés**
>
> Jelölőnégyzetnél a bejegyzéstípus metamezőjében be kell kapcsolnod a **Mentés tömbként** kapcsolót (**JetEngine → Bejegyzéstípusok**, a típus **Szerkesztés**, **Metamezők** rész, a jelölőnégyzet mező beállításai, majd a típus frissítése). Ha ez ki van kapcsolva, a kipipált opciók nem mentődnek.

Az **Új … hozzáadása** ablakban ezután kipipálhatod a kívánt opciókat. Az elem hozzáadása után a **Szerkesztés** gombbal ellenőrizheted, hogy az érték a bejegyzés metamezőjében is megvan.

## Saját oszlop a kapcsolódó elemek táblájában

1. Keresd meg a kapcsolat azonosítóját: a **JetEngine → Kapcsolatok** oldalon kattints a kapcsolat **Szerkesztés** hivatkozására, és másold ki a számot a böngésző címsorából. A kódban erre szükség van.
2. Illeszd be a `functions.php` fájlba az oszlopot hozzáadó kódot.

> **Megjegyzés**
>
> A metamező nevében aláhúzást (`_`) használj, ne kötőjelet: kötőjellel a kód nem mentődik.

A módosítható elemek:

- a horog (a fenti táblázat szerint);
- `child_object`: ennek a táblának az objektuma. Ha a szülőket mutató táblába akarsz oszlopot, `parent_object` kell;
- az oszlop azonosítója (például `_duration_time`);
- az oszlop látható neve (például „Duration Time”);
- az érték, amely üres metamezőnél jelenik meg (például „Not set”).

Nyisd meg a szülő bejegyzést: a **Cím** oszlop mellett megjelenik az új oszlop (például az időtartam és az indulás). Az üres mezők a kódban megadott értéket mutatják. Ha a kapcsolt elemet a **Szerkesztés** gombbal megnyitod, kitöltöd a mezőt és frissíted, a szülő oldalán az oszlop már az új adatot mutatja.

A két kód egymástól függetlenül is működik: lehet mező az ablakban oszlop nélkül, és oszlop a táblában, amelyhez nincs mező a létrehozó ablakban.
