# Adatok tárolása és kiolvasása

> Hogyan menti a bővítmény a csoport értékeit, és hogyan olvasod ki őket sablonban.

## Tárolás

- A csoport értéke az almezők értékeiből álló tömb (a beágyazott csoportokkal együtt).
- Az adatbázisban szerializált tömbként tárolódik, egyetlen meta értékként.
- Az almezők értékei „úgy, ahogy vannak” mentődnek: a bővítmény nem tisztítja és nem alakítja át őket.

> **Figyelem**
>
> Ha egy mező csoporton belül van, az értékét a bővítmény pontosan úgy menti, ahogy a mezőben áll. Ezzel elkerüli a felesleges feldolgozást, főleg összetett vagy mélyen beágyazott szerkezeteknél.

Például egy csoporton belüli `date` mezőnél a `save_format` paraméter nem érvényesül: a mentett érték mindig megegyezik a megjelenített értékkel.

## Almezők kiolvasása

A csoport adatait az `rwmb_meta()` függvénnyel kéred le:

```php
$csoport = rwmb_meta( 'csoport_azonosito' ) ?: [];
```

A visszatérési érték az almezők azonosítóiból és értékeiből álló asszociatív tömb:

```php
[
    'almezo_1' => 'érték 1',
    'almezo_2' => 'érték 2',
]
```

Egy almező értéke:

```php
$ertek = $csoport['almezo_1'] ?? '';
echo $ertek;
```

Ha a csoport ismételhető, az `rwmb_meta()` csoportok tömbjét adja vissza:

```php
[
    [ 'almezo_1' => 'érték 1', 'almezo_2' => 'érték 2' ],
    [ 'almezo_1' => 'érték 3', 'almezo_2' => 'érték 4' ],
]
```

Végigjárásuk:

```php
$csoportok = rwmb_meta( 'csoport_azonosito' ) ?: [];
foreach ( $csoportok as $csoport ) {
    echo $csoport['almezo_1'] ?? '';
}
```

### Példa: kapcsolattartók

A csoport regisztrálása:

```php
add_filter( 'rwmb_meta_boxes', function ( $meta_boxes ) {
    $meta_boxes[] = [
        'title'  => 'Kapcsolattartók',
        'fields' => [
            [
                'id'     => 'kapcsolatok',
                'type'   => 'group',
                'clone'  => true,
                'fields' => [
                    [ 'id' => 'nev',     'name' => 'Név' ],
                    [ 'id' => 'email',   'name' => 'E-mail' ],
                    [ 'id' => 'telefon', 'name' => 'Telefon' ],
                ],
            ],
        ],
    ];
    return $meta_boxes;
} );
```

Megjelenítésük a `single.php` sablonban:

```php
$kapcsolatok = rwmb_meta( 'kapcsolatok' ) ?: [];
foreach ( $kapcsolatok as $kapcsolat ) {
    echo '<div class="kapcsolat">';
    echo '<h4>Kapcsolati adatok</h4>';
    echo '<p><strong>Név:</strong> ' . $kapcsolat['nev'] . '</p>';
    echo '<p><strong>E-mail:</strong> ' . $kapcsolat['email'] . '</p>';
    echo '<p><strong>Telefon:</strong> ' . $kapcsolat['telefon'] . '</p>';
    echo '</div>';
}
```

## Csoport kiírása oldalszerkesztőkkel

- **Elementor és Oxygen:** a csoport almezőit közvetlenül ki tudják írni.
- **Más oldalszerkesztők** (például Beaver Builder, Divi): használj MB View-t vagy shortcode-ot.

Példa shortcode egy olyan csoporthoz, amelynek almezői `title`, `images` és `desc`:

```php
add_shortcode( 'csoportom', function() {
    $csoport = rwmb_meta( 'csoport_mezo_azonosito' );
    if ( empty( $csoport ) ) {
        return '';
    }
    $output = '';

    $title   = $csoport['title'] ?? '';
    $output .= $title ? '<h3>' . $title . '</h3>' : '';

    $image_ids = $csoport['images'] ?? [];
    if ( $image_ids ) {
        $output .= '<div class="images">';
        foreach ( $image_ids as $id ) {
            $image   = RWMB_Image_Field::file_info( $id, [ 'size' => 'thumbnail' ] );
            $output .= '<img src="' . $image['url'] . '">';
        }
        $output .= '</div>';
    }

    $desc    = $csoport['desc'] ?? '';
    $output .= $desc ? wpautop( $desc ) : '';
    return $output;
} );
```

A használatához írd be a `[csoportom]` kódot a bejegyzés vagy oldal tartalmába, illetve az oldalszerkesztő egyik moduljába.

## Almezők értékei

Az `rwmb_meta()` az almezők nyers értékét adja vissza, nem formázza őket úgy, mint az önálló mezőknél.

| Mezőtípus | Visszaadott érték |
|---|---|
| `taxonomy`, `user`, `post` | Az objektum azonosítója (vagy azonosítói) |
| Fájl- és képmezők | A csatolmány azonosítója (vagy azonosítói) |
| `map`, `osm` | `"szélesség,hosszúság,nagyítás"` |
| `oembed` | URL |
| `wysiwyg` | Nyers tartalom (`<p></p>` nélkül) |

Példa képadatok lekérésére egy almezőből:

```php
$csoport   = rwmb_meta( 'csoport_azonosito' );
$image_ids = $csoport['kep_kulcs'] ?? [];
foreach ( $image_ids as $id ) {
    $image = RWMB_Image_Field::file_info( $id, [ 'size' => 'thumbnail' ] );
    echo '<img src="' . $image['url'] . '">';
}
```

További adatok lekéréséhez ezek a segédfüggvények használhatók:

| Mezőtípus | Segédfüggvény |
|---|---|
| `image`, `image_advanced`, `image_upload`, `single_image` | `wp_get_attachment_image_src()`, `wp_get_attachment_image_url()`, `RWMB_Image_Field::file_info( $image_id, $args )` (az `$args` tömb csak a `size` kulcsot fogadja) |
| `file`, `file_advanced`, `file_upload` | `get_attached_file()`, `RWMB_File_Field::file_info( $file_id )` |
| `oembed` | `RWMB_OEmbed_Field::get_embed( $url )` |
| `taxonomy`, `taxonomy_advanced` | `get_term()` |
| `user` | `get_userdata()` |
| `post` | `get_post()` |
| `wysiwyg` | `wpautop()` |
