# Ismétlő mező: feedek hozzárendelése és átállás a szerkesztőbe

> Hogyan jelenik meg és mit küld az Ismétlő mező a feedek mezőhozzárendelésében, és hogyan teheted a kóddal hozzáadott Ismétlő mezőt a szerkesztőből kezelhetővé.

Ez a fejezet az [Ismétlő mező](https://hub.hellowp.io/hu/plugins/gravityforms/halado-mezok-ismetlo/) két gyakorlati kérdését veszi végig: mit kap egy feed, ha Ismétlő mezőt rendelsz hozzá, és hogyan alakíthatod át a korábban kóddal hozzáadott Ismétlő mezőt úgy, hogy az űrlapszerkesztőben is szerkeszthető legyen.

## Ismétlő mező hozzárendelése feedben

A feedek mezőhozzárendelési legördülő listájában az Ismétlő mezőhöz kapcsolódó elemek az **Űrlapmezők** csoportban, a szokásos mezők mellett jelennek meg.

- Az Ismétlő mezőbe ágyazott másik Ismétlő mező a teljes útvonalával látszik, például **Játékosok → Elérhetőség**.
- Az Ismétlő mezőn belüli mező még egy szinttel beljebb, például **Elérhetőség → Telefon**.

Az Ismétlő mezőn belüli **E-mail** mező nem jelenik meg azokban a beállításokban, amelyek E-mail mezőt várnak. Ennek oka, hogy az Ismétlő mezőn belüli mező több értéket is adhat, nem egyetlen e-mail-címet. Jelenleg csak az E-mail mezőtípusra érvényes ez a megszorítás. A többi mező, például a **Név**, hozzárendelhető minden olyan beállításhoz, amely bármilyen mezőtípust elfogad.

## Mi megy át a feedbe

Hogy mit kap a feed, az attól függ, mit rendelsz hozzá. Az alábbi példákban egy **Játékosok** nevű Ismétlő mező van, benne **Név** és **E-mail** mezővel, valamint egy beágyazott **Elérhetőség** nevű Ismétlő mező, amelyben egy **Telefon** mező van. A JSON-példák azt mutatják, mit küldene a Webhooks kiegészítő.

| Mit rendelsz hozzá | Mit kap a feed | Mikor használd |
|---|---|---|
| Az Ismétlő mező (**Játékosok**) | Az Ismétlő mező teljes adata: minden sor, és a sorokban lévő beágyazott Ismétlő mezők és mezők is. | Ha a célrendszernek a teljes szerkezetre szüksége van. |
| A beágyazott Ismétlő mező (**Játékosok → Elérhetőség**) | A beágyazott mező összes sora egyetlen, lapos listában, a szülősorok szerinti csoportosítás nélkül. | Ha az összes beágyazott elemre szükséged van, de a szülő szerinti tagolásra nem. |
| Az Ismétlő mezőn belüli mező (**Elérhetőség → Telefon**) | Csak ennek az egy mezőnek az értékei. Ha az Ismétlő mezőnek több sora van, az értékek vesszővel elválasztott egyszerű listába kerülnek. | Ha a célrendszernek csak egyetlen adat kell, például a telefonszámok listája. |

### Az Ismétlő mező teljes szerkezete

```json
{
  "players": [
    {
      "3": "Minta Mihály",
      "4": "mihaly@example.com",
      "5": [
        { "6": "+3612345678" },
        { "6": "+3687654321" }
      ]
    },
    {
      "3": "Példa Tamás",
      "4": "tamas@example.com",
      "5": [
        { "6": "+3611112222" },
        { "6": "+3633334444" }
      ]
    }
  ]
}
```

### A beágyazott Ismétlő mező lapos listája

```json
{
  "player_contact_info": [
    { "6": "+3612345678" },
    { "6": "+3687654321" },
    { "6": "+3611112222" },
    { "6": "+3633334444" }
  ]
}
```

### Az Ismétlő mezőn belüli mező: vesszős lista

```json
{
  "contact_info_phone": "+3612345678, +3687654321, +3611112222, +3633334444"
}
```

A három közül azt válaszd, amelyik a célrendszer igényének megfelel: a teljes szerkezetet, a lapos listát vagy az egyszerű értéklistát.

## Kóddal hozzáadott Ismétlő mező átalakítása szerkeszthetővé

Az Ismétlő mező korábban béta besorolású volt, és csak kóddal lehetett az űrlaphoz adni. A 3.2.0-s kiadástól teljes értékű mezőként szerepel az űrlapszerkesztőben. Ha korábban kóddal vezetted be, az űrlap működéséhez nem kell átalakítanod, csak akkor, ha a mezőt az űrlapszerkesztőből akarod kezelni.

Az átalakítás azon alapul, hogy a kóddal hozzáadott mezőt egyszer elmented az űrlapba, majd a kódot eltávolítod, hogy ne maradjon belőle két példány.

1. Keresd meg a kódban azt a részt, amely hozzáadja az Ismétlő mezőt az űrlaphoz. A `gform_form_post_get_meta` szűrőt keresd. Példa (az űrlap azonosítóját írd át):

   ```php
   add_filter( 'gform_form_post_get_meta_149', 'add_my_field' );
   function add_my_field( $form ) {

       // Egysoros szöveg mező a csapattag nevének
       $name = GF_Fields::create( array(
           'type'       => 'text',
           'id'         => 1002, // Az azonosító egyedi legyen az űrlapon
           'formId'     => $form['id'],
           'label'      => 'Név',
           'pageNumber' => 1, // Ellenőrizd, hogy helyes-e
       ) );

       // E-mail mező a csapattag e-mail-címének
       $email = GF_Fields::create( array(
           'type'       => 'email',
           'id'         => 1001,
           'formId'     => $form['id'],
           'label'      => 'E-mail',
           'pageNumber' => 1,
       ) );

       // Az Ismétlő mező, benne a név és az e-mail mezővel
       $team = GF_Fields::create( array(
           'type'             => 'repeater',
           'description'      => 'Legfeljebb 3 csapattag, a maxItems tulajdonsággal',
           'id'               => 1000,
           'formId'           => $form['id'],
           'label'            => 'Csapattagok',
           'addButtonText'    => 'Csapattag hozzáadása',
           'removeButtonText' => 'Csapattag eltávolítása',
           'maxItems'         => 3,
           'pageNumber'       => 1,
           'fields'           => array( $name, $email ),
       ) );

       $form['fields'][] = $team;

       return $form;
   }
   ```

2. Nyisd meg az űrlapot az űrlapszerkesztőben, és ellenőrizd, hogy az Ismétlő mező látszik-e.
3. Távolítsd el a kódból a `gform_form_update_meta` szűrőt. Ez a szűrő mentéskor kiveszi az Ismétlő mezőt az űrlapból. Ha letiltod, a mező mentéskor nem tűnik el, és látható marad a szerkesztőben. Példa a szűrőre, amit el kell távolítani:

   ```php
   add_filter( 'gform_form_update_meta_1123', 'remove_my_field', 10, 3 );
   function remove_my_field( $form_meta, $form_id, $meta_name ) {

       if ( $meta_name == 'display_meta' ) {
           // Az Ismétlő mező eltávolítása: azonosító 1000
           $form_meta['fields'] = wp_list_filter( $form_meta['fields'], array( 'id' => 1000 ), 'NOT' );
       }

       return $form_meta;
   }
   ```

4. Mentsd az űrlapot az űrlapszerkesztőben, majd frissítsd az oldalt. Most két példányt látsz az Ismétlő mezőből: az éppen elmentettet és a kóddal hozzáadottat.
5. Távolítsd el a kódból a `gform_form_post_get_meta` szűrőt is. Ez adta hozzá az Ismétlő mezőt az űrlap létrehozásakor, így nélküle nem kerül be újra.
6. Frissítsd az űrlapszerkesztőt, és kattints az Ismétlő mezőre. Már csak egy példányt látsz, és az teljesen szerkeszthető a szerkesztőben.

Az űrlapszerkesztő mezői és az űrlap szerkesztésének lépései az [Új űrlap és az űrlapszerkesztő](https://hub.hellowp.io/hu/plugins/gravityforms/elso-lepesek-uj-urlap-es-szerkeszto/) fejezetben vannak.
