# Navigációs morzsa hookok: JSON-LD, osztályok, utolsó elem, kategóriák és CSS

> Hét hook a SEOPress PRO navigációs morzsájának átalakításához: a JSON-LD kimenet, a taxonómia-elemek, a HTML-osztályok, a mikroadat-jelölés, az utolsó elem linkje, az elsődleges kategória listája és a blokkszerkesztő CSS-e.

Ez a fejezet azokat a hookokat gyűjti össze, amelyekkel a SEOPress PRO navigációs morzsájának (breadcrumb) kimenetét és viselkedését módosíthatod. A morzsa beállításairól a [Navigációs morzsa (breadcrumbok)](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/megjelenes-navigacios-morzsa/) fejezet szól. A hookok használatának általános szabályait a [Composer és hookok használata](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/fejlesztoknek-composer-es-hookok/) fejezet írja le. A kódot általában a gyermeksablonod `functions.php` fájljába vagy egy saját bővítménybe tedd.

| Hook | Típus | Legkisebb verzió | Mire jó |
|---|---|---|---|
| `seopress_pro_breadcrumbs_json` | szűrő | 7.3 | A morzsa JSON-LD tömbjének módosítása. |
| `seopress_primary_category_list` | szűrő | 7.0 | Az elsődleges kategória választójában felkínált kategóriák (termékkategóriák) listája. |
| `seopress_pro_breadcrumbs_terms` | szűrő | 6.1 | A morzsába kerülő taxonómia-elemek módosítása. |
| `wp_head` | művelet | 5.7 | A morzsa beágyazott CSS-ének eltávolítása. |
| `seopress_pro_breadcrumbs_html_markup` | szűrő | 5.6 | A HTML-morzsa mikroadat-jelölésének (schema.org) ki- és bekapcsolása. |
| `seopress_pro_breadcrumbs_last_item_linkable` | szűrő | 5.5 | Az utolsó morzsaelem linkké tétele. |
| `seopress_pro_breadcrumbs_html_class`, `seopress_pro_breadcrumbs_html_class_ol`, `seopress_pro_breadcrumbs_html_class_li`, `seopress_pro_breadcrumbs_html_class_li_active` | szűrő | 5.4, 6.9 | A morzsa HTML-elemeinek osztályai. |

## A morzsa JSON-LD kimenetének módosítása

A `seopress_pro_breadcrumbs_json` szűrő a morzsa JSON-LD-jét egy PHP-tömbként adja át, mielőtt a SEOPress `<script type="application/ld+json">` blokként kiírná. A szűrő akkor fut le, ha a **SEO → PRO → Breadcrumbok** fülön be van kapcsolva a **JSON-LD breadcrumbok bekapcsolása** kapcsoló. Visszaadott értékként a (módosított) tömböt add vissza.

```php
add_filter( 'seopress_pro_breadcrumbs_json', 'sajat_morzsa_json' );
function sajat_morzsa_json( $json ) {
    // Például a lista nevének átírása.
    $json['name'] = 'Útvonal';
    return $json;
}
```

A tömb elemei: `@context`, `name`, `@type` (`BreadcrumbList`), a lista azonosítója (`@id`, a canonical URL és a `#breadcrumb` rész), és az `itemListElement` a morzsaelemekkel.

## A morzsába kerülő taxonómia-elemek módosítása

A `seopress_pro_breadcrumbs_terms` szűrő egyedi bejegyzéseknél a morzsába kerülő osztályozás-elemek (kategória, termékkategória stb.) tömbjét adja át. Minden elem egy háromelemű tömb:

| Index | Tartalom |
|---|---|
| `0` | az elem felirata |
| `1` | az elem URL-je |
| `2` | az osztályozási elem (term) azonosítója |

Példa: egy elem eltávolítása a morzsából az azonosítója alapján.

```php
add_filter( 'seopress_pro_breadcrumbs_terms', 'sajat_morzsa_elemek' );
function sajat_morzsa_elemek( $terms ) {
    foreach ( $terms as $kulcs => $elem ) {
        if ( 15 === (int) $elem[2] ) {
            unset( $terms[ $kulcs ] );
        }
    }
    return array_values( $terms );
}
```

## Az elsődleges kategória listájának szűrése

A `seopress_primary_category_list` szűrő azt a listát adja át, amelyből az elsődleges kategóriát választhatod a szerkesztőoldalon. Bejegyzéseknél a **Kategóriák**, WooCommerce-termékeknél a **Termékkategóriák** elemei szerepelnek benne. A szűrő csak ezekre a két osztályozásra (`category` és `product_cat`) fut le. Az elsődleges kategória a morzsában és a `%category%` típusú permalinkekben érvényesül, a funkcióról az [Elsődleges kategória](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/egyeb-elsodleges-kategoria/) fejezet szól.

A szűrő a kategóriák tömbjét kapja. Ha nincs hozzárendelt kategória, a tömb helyett `false` vagy hibaobjektum is érkezhet, ezért módosítás előtt ellenőrizd a típust.

```php
add_filter( 'seopress_primary_category_list', 'sajat_elsodleges_kategoria_lista' );
function sajat_elsodleges_kategoria_lista( $kategoriak ) {
    if ( ! is_array( $kategoriak ) ) {
        return $kategoriak;
    }
    // A „Egyéb” kategória (slug: egyeb) ne legyen választható.
    return array_filter( $kategoriak, function ( $kategoria ) {
        return 'egyeb' !== $kategoria->slug;
    } );
}
```

A kategóriák tetszőleges objektumok lehetnek, ha van `term_id` tulajdonságuk. A szűrő mellett van egy újabb, `seopress_primary_term_list` nevű változat is, amely a taxonómia nevét és a bejegyzést is megkapja, és minden osztályozásra lefut, nem csak a kategóriákra.

## A morzsa beágyazott CSS-ének eltávolítása

Ha a morzsa (HTML vagy JSON-LD) be van kapcsolva, a SEOPress PRO a `wp_head` hookon egy kis beágyazott stíluslapot ír ki a fejrészbe: a morzsalistából vízszintes sort csinál, és a **Breadcrumb-elválasztó** mezőben megadott jelet teszi az elemek közé. A blokkszerkesztőben látható morzsa ugyanezt a CSS-t használja alapértelmezett stílusként.

Ha saját stílust használsz, a beágyazott CSS-t a `wp_head` hookról leveheted. A `seopress_breadcrumbs_inline_css` függvény a 30-as prioritással kapcsolódik, ezért az eltávolításnak is ezt kell megadnia, és később kell lefutnia, mint a SEOPress betöltése:

```php
add_action( 'wp', 'sajat_morzsa_css_eltavolitasa' );
function sajat_morzsa_css_eltavolitasa() {
    remove_action( 'wp_head', 'seopress_breadcrumbs_inline_css', 30 );
}
```

A stíluslap szövegét a `seopress_pro_breadcrumbs_css` szűrő is módosítja: a szűrő a teljes `<style>…</style>` szöveget adja át és várja vissza.

## A HTML-morzsa mikroadat-jelölésének kikapcsolása

Ha a JSON-LD morzsa ki van kapcsolva, a HTML-morzsa saját schema.org mikroadat-jelölést (`itemscope`, `itemprop`) kap. Ha a JSON-LD be van kapcsolva, a SEOPress ezt a jelölést automatikusan elhagyja, hogy ne legyen kétszer ugyanaz a séma az oldalon.

A `seopress_pro_breadcrumbs_html_markup` szűrő ezt az automatikus döntést írja felül: `true` esetén a HTML-morzsa tartalmazza a mikroadat-jelölést, `false` esetén tiszta HTML marad.

```php
add_filter( 'seopress_pro_breadcrumbs_html_markup', '__return_false' );
```

## Az utolsó morzsaelem linkké tétele

Alapból az utolsó elem (az aktuális oldal) sima szöveg, nincs benne link. A `seopress_pro_breadcrumbs_last_item_linkable` szűrő alapértéke `false`; `true`-ra állítva az utolsó elem is hivatkozás lesz.

```php
add_filter( 'seopress_pro_breadcrumbs_last_item_linkable', '__return_true' );
```

## A morzsa HTML-osztályainak módosítása

Négy szűrővel cserélheted le a morzsa elemeinek osztályait, például hogy a témád vagy a CSS-keretrendszered osztályait használja. A `class_li`, `class_li_active` és `class_ol` szűrő teljes HTML-attribútumot ad át és vár vissza (a `class="…"` részt is), a `html_class` szűrő a `<nav>` elemé.

| Szűrő | Elem | Alapérték |
|---|---|---|
| `seopress_pro_breadcrumbs_html_class` | a `<nav>` elem | üres |
| `seopress_pro_breadcrumbs_html_class_ol` | az `<ol>` lista | `class="breadcrumb"` |
| `seopress_pro_breadcrumbs_html_class_li` | a `<li>` elemek | `class="breadcrumb-item"` |
| `seopress_pro_breadcrumbs_html_class_li_active` | az utolsó (aktív) `<li>` | `class="breadcrumb-item active"` |

```php
add_filter( 'seopress_pro_breadcrumbs_html_class_ol', function () {
    return 'class="sajat-morzsa"';
} );
add_filter( 'seopress_pro_breadcrumbs_html_class_li', function () {
    return 'class="sajat-morzsa__elem"';
} );
add_filter( 'seopress_pro_breadcrumbs_html_class_li_active', function () {
    return 'class="sajat-morzsa__elem sajat-morzsa__elem--aktiv"';
} );
add_filter( 'seopress_pro_breadcrumbs_html_class', function () {
    return 'class="sajat-morzsa-nav"';
} );
```

Fontos: a beágyazott CSS a `.breadcrumb` és `.breadcrumb li` osztályokra hivatkozik. Ha lecseréled az osztályokat, az elválasztó jelek és a vízszintes elrendezés elveszhet, ezért saját CSS-t is adj hozzá, vagy távolítsd el a beágyazott stíluslapot a fenti módon.
