# Más elemek, taxonómiák és csoportok

> Feltételek WordPress-elemek, kiemelt kép, kategóriák, címkék, egyéni taxonómiák és csoportmezők alapján, valamint a mezőcsoportokon kívüli elemek kezelése.

## Más HTML-elemek alapján

A feltétel nemcsak Meta Box mezőkre hivatkozhat, hanem a szerkesztő más elemeire is. Így egy meta boxot vagy mezőt függővé tehetsz például a bejegyzéstípustól, a szülőoldaltól, a bejegyzés azonosítójától vagy a kategóriáktól.

HTML-elem esetén az első paraméterbe a mezőazonosító helyett az elem azonosítóját írd. A beépített WordPress-elemek:

| Paraméter | Jelentés |
|---|---|
| `post_ID` | A bejegyzés azonosítója |
| `page_template` | Az oldalsablon |
| `parent_id` | A szülő bejegyzés azonosítója |
| `post_format` | A bejegyzés formátuma |

Például egy meta box (vagy mező) csak akkor jelenik meg, ha az oldalsablon a `template-custom.php`:

```php
'visible' => [ 'page_template', 'template-custom.php' ],
```

### Kiemelt kép

A kiemelt kép különleges elem. Mezőneve `_thumbnail_id`, és ha nincs beállítva, a WordPress `-1` értéket ad neki. A bővítmény észleli a kiemelt kép változását, ezért feltételt is köthetsz hozzá.

Mező megjelenítése, ha nincs kiemelt kép:

```php
'visible' => [ '_thumbnail_id', '=', '-1' ],
```

Mező megjelenítése, ha van kiemelt kép:

```php
'visible' => [ '_thumbnail_id', '!=', '-1' ],
```

Mező megjelenítése csak akkor, ha a kiemelt kép egy bizonyos, például `123` azonosítójú kép:

```php
'visible' => [ '_thumbnail_id', '=', '123' ],
```

## Mezőcsoportokon kívüli elemek

A bővítmény a mezőcsoportokon kívüli elemeket is el tudja rejteni. Ha például a `.custom-div` elemet el akarod rejteni, amikor a `brand` azonosítójú mező értéke `Microsoft`, használd az `rwmb_outside_conditions` szűrőt:

```php
add_filter( 'rwmb_outside_conditions', function ( $conditions ) {
    $conditions['.custom-div'] = [
        'hidden' => [ 'brand', 'Microsoft' ],
    ];

    return $conditions;
} );
```

A kulcs bármilyen CSS-választó lehet, például `#custom-id` vagy `.my-class .children`.

Ha a feltétel olyan beviteli elemtől függ, amely nem Meta Box mező, az azonosítóját `#` jellel add meg:

```php
add_filter( 'rwmb_outside_conditions', function ( $conditions ) {
    $conditions['.custom-div'] = [
        'hidden' => [ '#input-id', 'value' ],
    ];

    return $conditions;
} );
```

## Fülek elrejtése

Az **MB Tabs** bővítménnyel létrehozott fülek nem rendes mezők vagy meta boxok, ezért az elrejtésükhöz is az `rwmb_outside_conditions` szűrő kell. A feltétel a fül HTML-osztályára hivatkozik.

Vegyünk egy meta boxot két fülekkel, **Biography** és **Interest** néven:

```php
add_filter( 'rwmb_meta_boxes', function ( $meta_boxes ) {
    $meta_boxes[] = [
        'title'     => 'MB Tabs 2',
        'tabs'      => [
            'bio'      => 'Biography',
            'interest' => 'Interest',
        ],
        'tab_style' => 'box',
        'fields'    => [
            [
                'name' => 'Bio',
                'id'   => 'bio',
                'type' => 'textarea',
                'tab'  => 'bio',
            ],
            [
                'name' => 'Interest',
                'id'   => 'interest',
                'type' => 'textarea',
                'tab'  => 'interest',
            ],
        ],
    ];

    return $meta_boxes;
} );
```

A fülek HTML-je ehhez hasonló, minden fül `rwmb-tab-<fül azonosítója>` osztályt kap:

```html
<ul class="rwmb-tab-nav">
    <li class="rwmb-tab-bio rwmb-tab-active" data-panel="bio"><a href="#">Biography</a></li>
    <li class="rwmb-tab-interest" data-panel="interest"><a href="#">Interest</a></li>
</ul>
```

Az **Interest** fül elrejtéséhez, ha a bejegyzés formátuma „aside”, add a fül osztályát a szűrőhöz:

```php
add_filter( 'rwmb_outside_conditions', function ( $conditions ) {
    $conditions['.rwmb-tab-interest'] = [
        'hidden' => [ 'post_format', 'aside' ],
    ];

    return $conditions;
} );
```

### Az első fül elrejtése

Az első fül elrejtésekor a hozzá tartozó panelt is el kell rejteni, a következő fül panelját pedig meg kell jeleníteni:

```php
add_filter( 'rwmb_outside_conditions', function ( $conditions ) {
    $conditions['.rwmb-tab-bio, .rwmb-tab-panel-bio'] = [
        'hidden' => [ 'post_format', 'aside' ],
    ];
    $conditions['.rwmb-tab-panel-interest'] = [
        'visible' => [ 'post_format', 'aside' ],
    ];

    return $conditions;
} );
```

## Taxonómiák

### Bejegyzés-kategória

A kategóriához a `post_category` az első paraméter:

```php
'visible' => [ 'post_category', 'in', [ 4, 5, 6 ] ]
```

Alapértelmezés szerint kategóriaazonosítókkal dolgozik. Ha inkább a kategória szlugját használnád, tedd elé a `slug:` előtagot:

```php
'visible' => [ 'slug:post_category', 'in', [ 'fashion', 'gaming', 'technology' ] ]
```

### Címke

A címkék támogatása csak a blokkszerkesztőben (Gutenberg) érhető el. Az első paraméter a `tags`:

```php
'visible' => [ 'tags', 'in', [ 4, 5, 6 ] ]
```

A kategóriától eltérően a címkéknél kizárólag címkeazonosítót használhatsz.

### Egyéni taxonómia

Egyéni taxonómiánál az első paraméter `tax_input[taxonómia_szlug]`:

```php
'hidden' => [ 'tax_input[product]', 'in', [ 5, 6, 7 ] ],
```

A kategóriához hasonlóan itt is használhatsz szlugot:

```php
'hidden' => [ 'slug:tax_input[product]', '!=', 'drones' ]
```

## Csoportmezők

A bővítmény jQuery-vel ellenőrzi a mező azonosítóját és értékét. Nem klónozható csoport almezőjének tényleges azonosítója `csoportazonosító_mezőazonosító` alakú, a feltételben ezt kell megadnod:

```php
[
    'id'     => 'group',
    'type'   => 'group',
    'fields' => [
        [
            'id'      => 'brand',
            'name'    => 'Márka',
            'type'    => 'select',
            'options' => [
                'apple'     => 'Apple',
                'google'    => 'Google',
                'microsoft' => 'Microsoft',
            ],
        ],
        [
            'id'      => 'apple_products',
            'name'    => 'Melyik Apple-terméket szereted?',
            'type'    => 'radio',
            'options' => [
                'iPhone'  => 'iPhone',
                'iPad'    => 'iPad',
                'Macbook' => 'Macbook',
            ],
            'visible' => [ 'group_brand', '=', 'apple' ],
        ],
    ],
],
```

Klónozható csoportnál a feltétel csak az adott klónon belül fut, ezért az almezők azonosítóját nem kell átírnod.
