# Saját dinamikus változók és mezőértékek a metaadatokban

> Egyedi dinamikus változó létrehozása, ACF- és JetEngine-mezők, valamint WooCommerce-termékattribútumok használata a SEO-metaadatokban.

A SEOPress több tucat beépített dinamikus változót kínál a metaadatokhoz (például a címhez vagy a meta leíráshoz), és a sémákban is használhatod őket. Ha nem találod a kívántat, készíthetsz sajátot, és más bővítmények mezőinek értékét is behúzhatod.

## Saját dinamikus változó létrehozása

A kódot a (gyermek)sablon `functions.php` fájljába, vagy egy must-use bővítménybe másold.

### 1. lépés: a változó regisztrálása

```php
function sp_titles_template_variables_array($array) {
    $array[] = '%%my-custom-global-variable%%';
    return $array;
}
add_filter('seopress_titles_template_variables_array', 'sp_titles_template_variables_array');
```

A `%%my-custom-global-variable%%` helyére írd a kívánt nevet, például `%%seo%%`.

### 2. lépés: az érték kiírása a forráskódba

```php
function sp_titles_template_replace_array($array) {
    //escape your values!
    $array[] = esc_attr(wp_strip_all_tags('Best WordPress SEO plugin'));
    return $array;
}
add_filter('seopress_titles_template_replace_array', 'sp_titles_template_replace_array');
```

Az érték helyén bármilyen PHP-függvényt használhatsz. Az adatot mindig escape-eld a biztonság miatt.

### 3. lépés: a változó felvétele a legördülő listába

Standard SEO metaboxhoz:

```php
function sp_get_dynamic_variables($array){
    $array['%%my-custom-global-variable%%'] = 'My new dynamic variable title';
    return $array;
}
add_filter('seopress_get_dynamic_variables', 'sp_get_dynamic_variables');
```

Az univerzális SEO metaboxhoz és az egyedi sémához más kód kell; a legördülő listába való felvétel egyébként nem kötelező, a változót begépelve is működik.

### 4. lépés: a változó használata

Szerkessz egy bejegyzést, és a SEO metaboxban a cím mezőbe írd be az új változót.

### Több változó egyszerre

Mindhárom szűrőnél ugyanabba a tömbbe veszed fel egymás után a változókat, a sorrendnek pedig egyeznie kell:

```php
function sp_titles_template_variables_array($array) {
    $array[] = '%%my-custom-global-variable%%';
    $array[] = '%%another-custom-global-variable%%';
    return $array;
}
add_filter('seopress_titles_template_variables_array', 'sp_titles_template_variables_array');
function sp_titles_template_replace_array($array) {
    $array[] = esc_attr(wp_strip_all_tags( 'This is a variable' ));
    $array[] = esc_attr(wp_strip_all_tags( 'This is another variable' ));
    return $array;
}
add_filter('seopress_titles_template_replace_array', 'sp_titles_template_replace_array');
function sp_get_dynamic_variables($array){
    $array['%%my-custom-global-variable%%'] = 'My new dynamic variable title';
    $array['%%another-custom-global-variable%%'] = 'Another dynamic variable title';
    return $array;
}
add_filter('seopress_get_dynamic_variables', 'sp_get_dynamic_variables');
```

A változók hozzáadása után mentsd a bejegyzést.

## Egyedi mezők használata: ACF

Az „egyszerű” egyedi mezők értékét ezzel a változóval kéred le:

```text
%%_cf_your_custom_field_name%%
```

A `your_custom_field_name` helyére a mező nevét (kulcsát) írd, például `%%_cf_seo_title%%`. A változó használható címben, meta leírásban és közösségi (Open Graph, X) metaadatban is. Az Advanced Custom Fields azon mezőtípusait fedi le, amelyek a `get_field('field_name');` hívással érhetők el.

### ACF beállítóoldalak (Options Page) mezői

Az ACF beállítóoldalainak mezőit a `get_field('field_name', 'option');` hívással kéri le az ACF, és ezek alapból nem érhetők el a SEOPress metaadataiban. Ehhez egyedi dinamikus változót kell készíteni, a fenti módszerrel. A kódban cseréld a kívánt értékekre:

- a dinamikus változók nevét és kulcsát,
- az ACF-mezők nevét a `get_field()` hívásokban,
- a fordításhoz használt `text-domain` értéket a sajátodra.

Ha az univerzális SEO metaboxot használod, a legördülő lista kódját a fenti 3. lépés szerint kell igazítani, hogy a változó megjelenjen a listában. Ez nem kötelező.

## Egyedi mezők használata: JetEngine

A JetEngine bejegyzéstípusokhoz létrehozott meta mezői alapból egyedi mezők, vagyis a `wp_postmeta` táblában tárolt post metak. Értéküket ugyanúgy lekéred, mint az ACF-nél:

- SEO- és közösségi metaadatban, valamint kézi sémában: `%%_cf_your_custom_field_name%%`.
- Automatikus sémában válaszd az **Custom fields** forrást, majd az egyedi mező nevét.
- Automatikus egyedi sémában írd be a dinamikus változót: `%%_cf_your_custom_field_name%%`.

### Egyedi táblában tárolt mezők

Ha a JetEngine bejegyzéstípusánál bekapcsolod az egyedi meta tárolást (**Custom Meta Storage**), a mezőértékek lekéréséhez egyedi kód kell:

- SEO- és közösségi metaadathoz, kézi és egyedi sémához: a fenti saját dinamikus változós kódot igazítsd a mezőidhöz.
- Automatikus sémához: az automatikus sémák előre definiált dinamikus változóinak alapértelmezett listáját egy szűrővel bővítheted, így a JetEngine-mezők új dinamikus változóként jelennek meg az automatikus sémákban.

Ismétlő (repeater), jelölőnégyzet, rádiógomb és legördülő mezőtípusoknál is a saját dinamikus változós módszert használd.

## WooCommerce-termékattribútumok a metaadatokban

### 1. eset: termékattribútumok

A termékattribútumok egyedi taxonómiák. Amikor a **Termékek → Tulajdonságok** oldalon létrehozol egyet, a rendszer egy `pa_` kezdetű taxonómiát hoz létre (például `pa_my_product_attribute`; a „pa” a product attribute rövidítése).

A metaadatban (például a címben) ezzel a változóval használhatod:

```text
%%_ct_pa_color%%
```

Az attribútum nevét a termékattribútumok oldalán, a slug oszlopban találod.

### 2. eset: egyedi termékattribútumok

Az egyedi (nem taxonómiás) termékattribútumok a `_product_attributes` post metában tárolódnak: ez egy tömb a nevekkel (kulcsok) és értékekkel. A metaadatban ezt a változót használd:

```text
%%wc_product_attributes%%
```

Ehhez még egy szűrőt is fel kell venni a (gyermek)sablon `functions.php` fájljába, hogy a változó értéke megjelenjen.
