# Elsődleges kategória és kifejezés bármelyik taxonómiához

> Hogyan jelölöd ki egy tartalom elsődleges kategóriáját vagy kifejezését, mire használja ezt a SEOPress, hol tárolja, és hogyan szabályozhatod fejlesztőként.

Ha egy bejegyzés több kategóriába, vagy ugyanannak a taxonómiának több kifejezéséhez tartozik, az **elsődleges kifejezés** (primary term) mondja meg a SEOPressnek, melyiket használja a közvetlen hivatkozásokban, a dinamikus változókban és a navigációs morzsában.

Elsődleges kifejezést minden olyan nyilvános, hierarchikus taxonómiához megadhatsz, amely megjelenik a WordPress admin felületén: a kategóriákhoz, a WooCommerce termékkategóriáihoz és a saját hierarchikus taxonómiáidhoz is (például egy könyvekhez tartozó „Műfaj” vagy egy szolgáltatásokhoz tartozó „Helyszín” taxonómia).

## Mire használja a SEOPress az elsődleges kifejezést

- **Közvetlen hivatkozások:** az elsődleges kategória a bejegyzések `%category%` címkéjében az első kategória helyére kerül. A WooCommerce termékek hivatkozásában, ha az tartalmazza a termékkategóriát, az elsődleges termékkategória szerepel. Más taxonómiák elsődleges kifejezése nem változtatja meg a hivatkozásokat.
- **Dinamikus változók:** a `%%post_category%%` az elsődleges kategóriát adja vissza, a `%%_ct_<taxonómia>%%` (például `%%_ct_genre%%`) pedig az adott taxonómia elsődleges kifejezését. Használhatod őket címekben, meta leírásokban, közösségi címkékben és sémákban.
- **Navigációs morzsa (PRO):** ha egy tartalomtípushoz kiválasztasz egy taxonómiát a morzsa beállításainál (a **Taxonomy to show in Breadcrumbs** mezőben), az útvonal az adott taxonómia elsődleges kifejezésén és annak szülőin vezet végig.

Ha nincs elsődleges kifejezés, a SEOPress a tartalomhoz rendelt első kifejezést használja, ahogy a WordPress is. Ha az elsődleges kifejezést eltávolítod a tartalomról (például kikapcsolod a jelölőnégyzetét), a SEOPress figyelmen kívül hagyja, és az elsőre esik vissza.

## Az elsődleges kifejezés megadása

A választó csak a tartalomhoz rendelt kifejezéseket listázza. Előbb jelölj be legalább egyet, aztán válaszd ki közülük az elsődlegeset. Az elsődleges kifejezés törléséhez válaszd a **None (will disable this feature)** sort.

### Blokkszerkesztőben

1. Szerkeszd a bejegyzést, és nyisd meg a beállítások oldalsávját.
2. Az adott taxonómia paneljén (**Kategóriák**, termékkategóriák vagy a saját taxonómiád) jelöld be a tartalomhoz tartozó kifejezéseket.
3. A kifejezések listája alatt válaszd ki az elsődlegeset a **Select a primary category** mezőben (saját taxonómiánál a felirat a taxonómia nevével jelenik meg, például **Select a primary Genre**).
4. Mentsd a bejegyzést.

![A blokkszerkesztő Kategóriák panelje az elsődleges kategória választójával](./kepek/egyeb-elsodleges-kategoria.webp)

*A blokkszerkesztő Kategóriák panelje az elsődleges kategória választójával* (https://minta-bolt.hu/wp-admin/post.php?post=6&action=edit)

Az ábrán a két bejelölt kategória alatt látszik az elsődleges kategória választója.

A blokkszerkesztőben ez a választó csak azoknál a tartalomtípusoknál jelenik meg, amelyek támogatják az egyéni mezőket (`custom-fields`), és csak azoknak a felhasználóknak, akik elérik a SEO-metaboxot. Ha ez nem teljesül, használd az alább leírt **Haladó** fület.

### Klasszikus szerkesztőben

Ugyanez a választó a taxonómia dobozának alján jelenik meg (**Kategóriák**, termékkategóriák vagy a saját taxonómiád). A listája követi a bejelölt és a kikapcsolt jelölőnégyzeteket. Válaszd ki az elsődleges kifejezést, aztán kattints a **Frissítés** vagy a **Közzététel** gombra.

### A SEO-metaboxban

A SEO-metabox **Haladó** (Advanced) fülén taxonómiánként egy választót találsz, ugyanazzal a felirattal. Ez a fül akkor is felkínálja a választót, ha a taxonómia dobozából el van rejtve (lásd lent a `seopress_primary_term_inline_selector` szűrőt).

## Hogyan tárolja a SEOPress

Az elsődleges kifejezést a bejegyzés egy meta mezője őrzi, a kifejezés azonosítójával:

| Taxonómia | Meta kulcs |
|---|---|
| Kategóriák (`category`) és a WooCommerce termékek termékkategóriái (`product_cat`) | `_seopress_robots_primary_cat` |
| Bármely más taxonómia | `_seopress_robots_primary_term_{taxonómia}`, például `_seopress_robots_primary_term_genre` |

Ezek a kulcsok elérhetők a WordPress REST API-ban is (a bejegyzés `meta` mezőjében). WPML használatakor az elsődleges kifejezés átmásolódik a fordításokra, és a lefordított kifejezésre cserélődik. Ha Yoast SEO-ból importálsz, minden taxonómia elsődleges kifejezése is átkerül.

Az elsődleges kifejezést a saját kódodban így olvashatod ki:

```php
// A „genre” taxonómia elsődleges kifejezése azonosítóként (üres szöveg, ha nincs).
$term_id = get_post_meta( get_the_ID(), '_seopress_robots_primary_term_genre', true );
if ( $term_id && has_term( (int) $term_id, 'genre' ) ) {
	$term = get_term( (int) $term_id, 'genre' );
}
```

Egyes régebbi oldalak a `_seopress_robots_primary_cat` kulcsban más taxonómia kifejezését tárolták (CSV-import, REST API vagy a `seopress_primary_category_list` szűrő révén). A SEOPress ezt az értéket továbbra is beolvassa az adott taxonómiánál, amíg el nem mentesz hozzá új elsődleges kifejezést.

## Fejlesztőknek: szűrők

A kódrészleteket a gyermektéma `functions.php` fájljába vagy egy must-use bővítménybe tedd.

### Melyik taxonómiánál legyen választó

A `seopress_primary_term_taxonomies` szűrő megkapja a választót kínáló taxonómiákat (`WP_Taxonomy` objektumok, a taxonómia nevével indexelve) és a tartalomtípust. Taxonómia eltávolítása:

```php
add_filter( 'seopress_primary_term_taxonomies', function( $taxonomies, $post_type ) {
	unset( $taxonomies['genre'] );
	return $taxonomies;
}, 10, 2 );
```

Nem hierarchikus taxonómiát (például a bejegyzések címkéit) is hozzáadhatsz. Ennek a választója a SEO-metabox **Haladó** fülén jelenik meg:

```php
add_filter( 'seopress_primary_term_taxonomies', function( $taxonomies, $post_type ) {
	if ( 'post' === $post_type ) {
		$taxonomies['post_tag'] = get_taxonomy( 'post_tag' );
	}
	return $taxonomies;
}, 10, 2 );
```

### A felkínált kifejezések szűrése

A `seopress_primary_term_list` szűrő megkapja a felkínált kifejezéseket, a taxonómia nevét és a bejegyzést. Például így soha nem kínálja fel az „Uncategorized” kategóriát:

```php
add_filter( 'seopress_primary_term_list', function( $terms, $taxonomy, $post ) {
	if ( 'category' !== $taxonomy || ! is_array( $terms ) ) {
		return $terms;
	}
	return array_values(
		array_filter( $terms, function( $term ) {
			return 'uncategorized' !== $term->slug;
		} )
	);
}, 10, 3 );
```

A régebbi `seopress_primary_category_list` szűrő továbbra is lefut, de csak a kategóriákra és a termékkategóriákra, és csak a kifejezések listáját kapja meg.

### A választó elrejtése a taxonómia dobozából

Ha a `seopress_primary_term_inline_selector` szűrő `false` értéket ad vissza, a választó eltűnik a blokkszerkesztő és a klasszikus szerkesztő taxonómia-dobozából. A szűrő megkapja az aktuális értéket, a taxonómia nevét és a tartalomtípust. Az már elmentett elsődleges kifejezés tovább működik, és a SEO-metabox **Haladó** fülén a választó továbbra is elérhető.

```php
add_filter( 'seopress_primary_term_inline_selector', function( $enabled, $taxonomy, $post_type ) {
	if ( 'product_cat' === $taxonomy ) {
		return false;
	}
	return $enabled;
}, 10, 3 );
```
