# SEO-szabályok és oldaltérkép

> Szűrt oldalak felvétele az oldaltérképre, SEO-cím és leírás beállítása a szűrők értékeiből, megjelenítésük az oldalon.

A SEO-szabályokkal azt érheted el, hogy a szűrőket tartalmazó oldal különböző szűrési eredményekkel is bekerüljön az oldaltérképre, és a szűrt oldalnak a kiválasztott értékektől függő SEO-címe és leírása legyen. A funkció az **Intelligens szűrők → Beállítások → SEO Rules Settings (beta)** oldalon van.

Csak ezek a szűrőtípusok használhatók szabályban: **Jelölőnégyzetek listája**, **Választógomb**, **Kiválasztás** és **Vizuális**.

## A szabályok kezelése

![A SEO-szabályok oldala egy új, üres szabállyal](./kepek/szuro-beallitasok-seo-szabaly.webp)

*A SEO-szabályok oldala egy új, üres szabállyal* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-dashboard-settings-page&subpage=jet-smart-filters-seo-rules-settings)

A képen bekapcsolt kapcsolóval és egy újonnan felvett szabállyal látod az oldalt. A szabály fejléce mutatja az oldalt és a szolgáltatót, a jobb szélén a másolás és a törlés ikon van.

1. Kapcsold be a **Use SEO & Sitemap Rules** kapcsolót (alapból ki van kapcsolva).
2. Az **Add Rule** gombbal vegyél fel egy szabályt.
3. Töltsd ki a szabály mezőit (lásd lent).
4. A **Save Rules** gombbal mentsd a szabályokat.

A **Save Rules** gomb mellett látod az oldaltérkép elérési útját. A mellette lévő gombbal a vágólapra másolhatod. A szabályokat a fogantyúval átrendezheted, a fejléc nyilával összecsukhatod.

### A szabály mezői

| Mező | Mit csinál |
| --- | --- |
| **Page slug** | Az oldal slugja, vagyis az elérési útja az oldal címében, például `filters-page`. A mező alatt példa mutatja a teljes URL-t. |
| **Provider** | A szolgáltató, amelyhez az oldal szűrői tartoznak, például a JetEngine Listing Grid esetén a **JetEngine**. |
| **Lekérdezés ID** | A szűrőket és a szolgáltatót összekötő Query ID. Ha nem azonosítóval kötöd össze őket, hagyd üresen. |
| **Allowed Filters (max 3 filters)** | A szabályhoz tartozó szűrők. Az **Add Filter** gombbal veszel fel egyet, és a megjelenő mezőben választod ki. Legfeljebb három szűrő köthető egy szabályhoz. |
| **SEO Title** | Az oldal SEO-címe. |
| **SEO Description** | Az oldal SEO-leírása. |

Ha egy oldalon több szolgáltató van (például két Listing Grid), mindegyikhez külön szabályt vegyél fel ugyanazzal a **Page slug** értékkel, de a megfelelő **Lekérdezés ID**-val.

## Példa: konferenciaoldal

A példában egy konferenciaoldalon konferenciákat szűrsz a résztvevők száma, a típus és a formátum szerint, és ugyanott egy előadólistát is szűrsz a tapasztalatuk alapján. Az előkészítés:

1. Hozz létre szűrőket a **Intelligens szűrők → Új hozzáadása** oldalon. A példában:
   - **Jelölőnégyzetek listája** szűrő a „Konferencia típusa” taxonómiából (**Data Source**: taxonómia);
   - **Választógomb** szűrő a „Konferencia formátuma” egyéni mezőből: add meg az egyéni mező kulcsát, kapcsold be a **Get Choices From Field Data** kapcsolót, a **Field Source Plugin** legyen **JetEngine**, a **Lekérdezési változó** mezőbe pedig írd ugyanazt a kulcsot;
   - **Vizuális** szűrő a „Résztvevők száma” mezőből: **Data Source** a kézi bevitel, a típus **Color**, a viselkedés **Checkbox**. Az opciók értéke egyezzen a metamező opcióinak értékével, a lekérdezési változó pedig a metamező neve;
   - egy további **Választógomb** szűrő az előadók tapasztalatához, ugyanígy.
2. Hozz létre egy oldalt, és vedd fel rá a szűrőket. Jegyezd fel az oldal slugját.
3. Az első három szűrő **Query ID** mezőjébe írd ugyanazt az értéket (például `first-listing`), és ugyanezt add meg az első Listing Grid **CSS ID** mezőjében.
4. A második szakasz szűrőjének és Listing Gridjének adj másik azonosítót (például `second-listing`).
5. Mentsd az oldalt.

A szabályok beállítása:

1. Az első szabályban a **Page slug** az oldal slugja, a **Provider** a **JetEngine**, a **Lekérdezés ID** a `first-listing`. Az **Add Filter** gombbal vedd fel a három szűrőt.
2. Írd meg az **SEO Title** és az **SEO Description** mezőt. A szűrők értékeit makróként illeszted be a mező melletti ikonnal (lásd a következő szakaszt), a szöveget pedig körülírod. A szűrők kiválasztott értékei kerülnek a szövegbe, a többi szöveg állandó.
3. A második szabályhoz az **Add Rule** gombbal új szabályt veszel fel ugyanazzal a **Page slug** értékkel, a **JetEngine** szolgáltatóval és a `second-listing` azonosítóval. Egy szűrőt kapcsolsz hozzá, a címe lehet „Előadók tapasztalata”.
4. Kattints a **Save Rules** gombra, és másold ki az oldaltérkép címét.

Nyisd meg a kimásolt címet a böngészőben: a generált XML-fájlban látod a szabályokból előállított URL-eket. Elsőként az első szabály szűrőinek kombinációi szerepelnek, utána a második szabályé.

### Az oldaltérkép használata keresőoptimalizáló bővítménnyel

A generált fájlt a keresőoptimalizáló bővítmények oldaltérképéhez is hozzáadhatod. Rank Math esetén kell egy kódrészlet, amelyet például a Code Snippets bővítménnyel vagy a téma `functions.php` fájljában helyezhetsz el:

```php
add_filter('rank_math/sitemap/providers', function( $external_providers ) {

	class JSF_Provider implements \RankMath\Sitemap\Providers\Provider {

		public function handles_type( $type ) {
			return false;
		}

		public function get_index_links( $max_entries ) {
			return [
				[
					'loc'     => 'your_xml_url',
					'lastmod' => '',
				]
			];
		}

		public function get_sitemap_links( $type, $max_entries, $current_page ) {
			return [];
		}
	}

	$external_providers['jsf_provider'] = new JSF_Provider();

	return $external_providers;

});
```

A `your_xml_url` helyére a saját, kimásolt oldaltérkép-címedet írd. Mentsd és aktiváld a kódrészletet. Ezután a Rank Math oldaltérkép-beállításainál (**Rank Math SEO → Sitemap Settings**) a beállítóoldal tetején lévő sávban lévő hivatkozásra kattintva látod, hogy a szűrők oldaltérképe bekerült a fő oldaltérképbe.

## SEO-cím és leírás összeállítása

A **SEO Title** és a **SEO Description** mezőben a szűrők értékeit makrókkal illeszted be, és közéjük saját szöveget írsz.

1. Állj a mezőbe, és kattints a mező melletti adatbázis ikonra (**Dynamic Tags**).
2. Válaszd ki a listából a szűrőt. Megnyílnak a szűrőtípusnak megfelelő mezők:
   - **Választógomb** és **Kiválasztás** szűrőnél: **Text before**, **Text after**, **Fallback**;
   - **Jelölőnégyzetek listája** és **Vizuális** szűrőnél: **Text before**, **Text after**, **Fallback**, **Delimiter**, **Last item delimiter**.
3. A **Text before** és a **Text after** a kiválasztott érték előtt és után megjelenő szöveg. A **Fallback** az a szöveg, amely akkor jelenik meg, ha a szűrőben nincs kiválasztott érték (ha üres, semmi nem jelenik meg). A **Delimiter** több kiválasztott érték elválasztója (például vessző), a **Last item delimiter** az utolsó elem előtti szó (például „és”).
4. Az **Add** gombbal beszúrod a makrót a mezőbe.
5. Írd meg körülötte a szöveget, és ismételd meg a többi szűrővel.
6. Végül kattints a **Save Rules** gombra.

Egy kész cím és leírás például így néz ki (a `{{filter_…}}` részeket a beszúrás hozza létre, nem kell kézzel beírnod):

```text
{{filter_600}} {{filter_599::::::,::and}} Conference(s) for {{filter_601::::::,::and}} People
```

```text
Check the {{filter_600}} {{filter_599::::::,::and}} conferences for {{filter_601::::::,::and}} people on Arnau website.
```

Egyszerűbb esetben, egyetlen szűrőnél a leírás így nézhet ki: `Check the speakers with the {{filter_602::"::"}} status.`

## A SEO-cím és -leírás megjelenítése az oldalon

A szűrt oldalon a kiválasztott értékektől függő címet és leírást dinamikus adatként jeleníted meg.

**Elementor:**

1. Szerkeszd az oldalt, és vegyél fel egy dinamikus címkét támogató widgetet, például **Címsor**.
2. Kattints a fő forrásmező (például **Cím**) melletti **Dynamic Tags** gombra.
3. A **JetSmartFilters** szekcióból válaszd a **SEO Title** lehetőséget. A haladó beállításokban megadhatod a **Before**, **After** és **Fallback** szöveget.
4. Egy másik címsor-widgetnél ugyanígy a **SEO Description** lehetőséget válaszd.
5. Mentsd az oldalt.

**Blokkszerkesztő (Gutenberg):**

1. Vegyél fel egy olyan blokkot, amely támogatja a JetEngine makróit (például **Címsor**), és kattints a blokk feletti **Dynamic Tags** gombra.
2. A **SOURCE** listában válaszd a **Custom data** lehetőséget.
3. A **SELECT DATA TO SHOW** listában válaszd a **JetSmartFilters SEO Title** vagy a **JetSmartFilters SEO Description** lehetőséget.
4. Mentsd az oldalt.

**Bricks:**

1. Vegyél fel egy elemet, amely támogatja a dinamikus adatot (például **Címsor**), és kattints a fő mező melletti gombra.
2. A **JET SMART FILTERS** szekcióból válaszd a **SEO Title** vagy a **SEO Description** lehetőséget.
3. Mentsd az oldalt.

Az eredményt a nyilvános oldalon látod: ha a szűrőkben értékeket választasz, a cím és a leírás a beállított szöveggel és a kiválasztott értékekkel jelenik meg.
