# Bejegyzések frissítése a weboldalról űrlappal

> Szerkesztőűrlap egy bejegyzés adatainak módosításához a weboldalról: Profilkészítő aloldal, listázás Edit gombbal, űrlapmezők minden meta mező típushoz, Insert/Update Post művelet és előbeállítások.

A látogató (bejelentkezett felhasználó) a weboldalról, űrlappal módosíthatja egy bejegyzés adatait. Ez az alap WordPress-bejegyzésekkel és egyéni bejegyzéstípusokkal is működik. A fejezet az „Események” bejegyzéstípus szerkesztőűrlapját építi fel, a Profilkészítő fiókoldalának aloldalán. Az űrlapot bármelyik statikus oldalra is teheted.

Követelmény: a JetFormBuilder bővítmény, vagy a JetEngine bekapcsolt **Űrlapok (régi)** modullal és beállított Profilkészítővel. A JetFormBuilder a jobb választás, a JetEngine űrlapkészítője régi. Mindkét módszert leírjuk.

## 1. Aloldal a Profilkészítőben

1. Nyisd meg a **JetEngine → Profile Builder → Account Page** oldalt, és hozz létre egy új aloldalt a szerkesztőűrlapnak.
2. Adj neki címet és azonosítót (slug-ot).
3. Kapcsold be a **Hide from menu** kapcsolót, hogy az aloldal ne jelenjen meg a profilmenüben. Az URL-en így is elérhető marad.

Az űrlapot később helyezed el az aloldalon. A Profilkészítőről a [Profilkészítő áttekintése](https://hub.hellowp.io/hu/plugins/jet-engine/profil-profilkeszito-attekintes/) és a [Profilkészítő beállítása](https://hub.hellowp.io/hu/plugins/jet-engine/profil-profilkeszito-beallitasa/) fejezetben olvashatsz.

## 2. A listázás

A látogató a bejegyzések listájában az „Edit Post” gombbal jut az űrlaphoz.

1. Ha még nincs, készíts listázási sablont az egyéni bejegyzéstípushoz, amelynek bejegyzéseit szerkeszteni lehet.
2. A sablonba tedd be a **Dynamic Link** widgetet. A link **Source** (forrás) értéke legyen **Profile Page**, és add meg az előbb létrehozott aloldalt.
3. Adj neki feliratot, például „Edit Event”.
4. Kapcsold be az **Add Query Arguments** kapcsolót, és a mezőbe írd be:

```text
_post_id=%current_id%
```

A `_post_id` az URL-paraméter neve, a `%current_id%` makró pedig dinamikusan az aktuális bejegyzés azonosítóját adja. A link megnyomása után az URL-ben ott lesz a szerkesztendő bejegyzés azonosítója, ezt olvassa majd ki az űrlap.

5. Mentsd a sablont.

A listát bármelyik oldalra elhelyezheted. A példában egy „My Events” aloldal tartalmazza: ehhez készíts oldalsablont (Elementor → Saját sablonok), tedd bele a **Listing Grid** widgetet, válaszd ki a listázási sablont, és a Query Builderrel jeleníts meg csak az aktuális felhasználó által szerzett bejegyzéseket.

## 3. Az űrlap JetFormBuilderben

A **JetFormBuilder → Forms → Add New** menüben hozz létre új űrlapot.

### Rejtett mező

Vegyél fel egy **Hidden Field** blokkot. A **Field Value** értéke legyen **URL Query Variable**, a **Query Variable Key** mezőbe pedig írd be: `_post_id`. Így a mező kiolvassa a szerkesztett bejegyzés azonosítóját az URL-ből. Ha az űrlapot a bejegyzés saját oldalára teszed, a **Field Value** legyen **Current Post ID**.

### Text, WYSIWYG és Textarea mezők

A Text, Textarea és WYSIWYG meta mezők szerkesztéséhez használj ugyanilyen típusú mezőket. A példában a bejegyzés címéhez egy Text mező, az esemény leírásához (WYSIWYG típusú meta mező) egy WYSIWYG mező tartozik. A **Field Label** és **Form Field Name** kötelező, a többi beállítás opcionális.

### Checkbox, Radio és Select mezők

A többválasztós meta mezők (Checkbox, Radio, Select) szerkesztéséhez használd a megfelelő űrlapmezőt.

> A Checkbox meta mező beállításai között kapcsold be a **Save as array** kapcsolót. Ha ezt korábban nem tetted, kapcsold be, és mentsd újra az összes bejegyzést: szerkeszd a bejegyzést, vedd ki és add vissza a jelölést a meta mezőben, és kattints a **Frissítés** gombra.

A Checkbox mező beállításai: **Fill Options From** = **Generate Dynamically**, **Generator Function** = **Get values list from JetEngine field options**, a **Field Name** mezőbe pedig a Checkbox meta mező neve kerül. Így a mező a meta mező lehetőségeiből generálja a sajátját.

A taxonómia frissítéséhez egy Select mező kell: a **Fill Options From** értéke **Terms**, és válaszd ki a taxonómiát. Taxonómiához Radio, Checkbox és Select mező is használható.

### Date, Time és Datetime mezők

A Date, Time és Datetime meta mezőkhöz a megfelelő űrlapmezőket használd. A példában két Date meta mező van (kezdés és befejezés), ezért két Date mezőt veszel fel.

A legfontosabb: a Date mezőnél kapcsold be az **Is Timestamp** kapcsolót, és a Date meta mezőnél a **Save as timestamp** kapcsolót is. Ha ez utóbbit a bejegyzések létrehozása előtt nem kapcsoltad be, kapcsold be, és mentsd újra a bejegyzéseket (válaszd ki újra a dátumot, és kattints a **Frissítés** gombra). Datetime mezőnél is be kell kapcsolni az **Is Timestamp** kapcsolót, a Time mezőnél nincs ilyen beállítás.

Beállíthatod, hogy a választható dátumok egy adott naptól induljanak. Az **Starting from Date** mezőbe az aktuális dátumhoz írd be (a jeleket is másold):

```text
'%CT::CurrentDate|toDate%'
```

Time mezőnél az aktuális időponttól:

```text
'%CT::CurrentDate|toTime%'
```

Datetime mezőnél az aktuális dátumtól és időtől:

```text
'%CT::CurrentDate|toDateTime%'
```

### Media mező

A bejegyzés kiemelt képének frissítéséhez használj **Media Field** blokkot.

- **User Access**: bármi, kivéve az **Any user (incl. Guest)** értéket, mert a vendég nem szerkeszthet bejegyzést és nem tölthet fel a médiatárba.
- **Insert attachment**: ha be van kapcsolva, a feltöltött fájl a médiatárba is bekerül. Csak bejelentkezett felhasználóknál működik.
- **Field Value**: a kiemelt kép azonosítóként tárolódik, ezért válaszd az **Attachment ID** értéket. Média meta mezőnél az űrlapmező értékének egyeznie kell a meta mező **Value format** beállításával. Ha például a Gallery meta mező formátuma **Media URL**, az űrlapmezőnél az **Attachment URL** kell.
- **Maximum Allowed Files to Upload**: Gallery meta mező frissítéséhez egynél több fájlt engedélyezz.
- **Maximum Size in MB**: egy fájl legnagyobb mérete.
- **Allowed MIME Types**: a feltölthető fájlformátumok.

A Media mezővel a Media és a Gallery meta mező is frissíthető.

### Repeater mező

Az ismétlő (Repeater) meta mező frissítéséhez **Repeater Field** blokk kell, amelybe ugyanolyan típusú mezőket teszel, mint az ismétlő meta mező belsejében. Ha az „event-addresses” ismétlő meta mezőben egyetlen „event-address” Text mező van, a Repeater blokkba egy Text blokkot teszel. A Repeater blokk **Form Field Name** értéke az ismétlő meta mező neve (`event-addresses`), a Text blokk neve pedig a belső mező neve (`event-address`).

### Insert/Update Post művelet

1. A jobb oldali **JetForm** fülön a **Post Submit Actions** szakaszban kattints a **New Action** gombra, és válaszd az **Insert/Update Post** műveletet. A ceruza gombbal szerkesztheted.
2. Válaszd ki a **Post Type** értékét („Events”) és a bejegyzés állapotát.
3. A **Fields Map** részben rendeld az űrlapmezőket a bejegyzés tulajdonságaihoz. Először a `post_id` mezőt a **Post ID (will update the post)** tulajdonsághoz.

> Ha a post_id mezőt nem rendeled ehhez, az űrlap beküldése új bejegyzést hoz létre a meglévő frissítése helyett.

4. Rendeld a többi mezőt is a tulajdonságokhoz. A meta mezőknél a **Post Meta** tulajdonság alatti mezőbe írd be a meta mező nevét.
5. Kattints az **Update** gombra.

### Előbeállítások (Preset Settings)

A **JetForm** fülön, a **Preset Settings** szakaszban kapcsold be az előbeállításokat, hogy az űrlap mezői a bejegyzés meglévő értékeivel töltődjenek ki, és a felhasználó csak a módosítandó adatokat írja át.

- **Source**: **Post**.
- **Get Post ID From**: **URL Query Variable**, a **Query Variable Name** pedig `_post_id`.
- Ha az űrlap a bejegyzés saját oldalán van, a **Get Post ID From** értéke **Current Post**.

Ezután rendeld hozzá az összes mezőt ugyanúgy, mint az Insert/Update Post műveletnél.

### Üzenetek és közzététel

A **General Messages Settings** szakaszban szerkesztheted a beküldés után megjelenő üzeneteket. Végül tedd közzé az űrlapot.

### Elhelyezés Elementorban

1. Az **Elementor → Templates → Saved Templates** oldalon hozz létre új sablont, amelyet később az „Edit Event” aloldalhoz rendelsz.
2. Tedd a sablonba a **JetForm** widgetet, és válaszd ki az űrlapot. A **Style** fülön formázd a mezőket.
3. Mentsd a sablont, majd a **JetEngine → Profile Builder → Account Page** oldalon rendeld hozzá az aloldalhoz.

## 3b. Az űrlap a JetEngine régi űrlapkészítőjében

Ha a **Űrlapok (régi)** modult használod, a **JetEngine → Űrlapok** menüben hozz létre új űrlapot. A lépések ugyanazok, a nevek kicsit eltérnek.

- **Hidden mező**: a **Field Value** értéke **URL Query Variable**, a **Query variable key** értéke `_post_id`. Bejegyzés saját oldalán a **Current Post ID** használható.
- **Text, Textarea, WYSIWYG**: ugyanolyan típusú mezők. A **Name** csak latin kisbetűt, számot és a „-” vagy „_” jelet tartalmazhatja, szóköz nem lehet benne, különben űrlaphibák keletkeznek.
- **Checkbox, Radio, Select**: a Checkbox meta mezőn a **Save as array** kapcsolót be kell kapcsolni, és az űrlapban a **Checkboxes** mező a **Generate Dynamically** forrást használja a **Get values list from JetEngine field options** függvénnyel. A taxonómiához **Terms** forrású Select kell.
- **Date, Time, Datetime**: ugyanaz, mint fent: **Is Timestamp** az űrlapmezőn, **Save as timestamp** a meta mezőn.
- **Media**: **User access** nem lehet az **Any user (incl. Guest)**, az **Insert attachment** bekapcsolt, és a **Field value** az **Attachment ID** (vagy a meta mező formátumának megfelelő). Meg kell adni a legnagyobb fájlszámot, méretet és a MIME-típusokat.
- **Repeater**: a **Repeatable Fields Group Start** és **Repeatable Fields Group End** mezők közé teszed a belső mezőket. A kezdő mező neve az ismétlő meta mező neve, a belső mezőé a belső meta mező neve.
- **Insert/Update Post**: a **Beküldés utáni műveletek / értesítések beállításai** szakaszban az **Értesítés hozzáadása** gombbal vedd fel. A **Fields Map** első sora a `post_id` mező a **Post ID (will update the post)** tulajdonsággal. A végén a **Módosítások alkalmazása** gombra kattints.
- **Üzenetek**: az **Üzenetek beállításai** szakaszban szerkeszthetők (lásd [Űrlapüzenetek](https://hub.hellowp.io/hu/plugins/jet-engine/urlapok-uzenetek/)).
- **Előbeállítások**: kapcsold be a **Pre-set form field values** jelölőnégyzetet. A **Source** értéke **Post**, a **Get post ID from** értéke **URL Query Variable**, a **Query variable name** értéke `_post_id` (bejegyzés saját oldalán **Current Post**). Utána rendeld hozzá a mezőket.
- **Elhelyezés**: Elementor-sablonban a **Form** widgetet használd, a Profile Builder aloldalhoz rendeld a sablont.

## Működés közben

Nyisd meg azt az oldalt, ahol a bejegyzések listája van, és kattints az „Edit Post” gombra. Az előbeállítások miatt az űrlap mezői a bejegyzés adataival töltődnek ki. Módosítsd a mezőket, és küldd be az űrlapot: a bejegyzés frissül.
