# Lekérdezésszűrők és élő keresés

> Lekérdezések rendezése, szűrése és élő keresése oldalújratöltés nélkül: bekapcsolás, szűrőelemek, URL-paraméterek, index, dinamikus címkék és hibaelhárítás.

A lekérdezésszűrőkkel (rendezés, szűrés és élő keresés) a látogató oldalújratöltés nélkül változtathatja egy Bricks lekérdezési ciklus tartalmát. Hozzáadhatsz keresőmezőt, jelölőnégyzeteket, választógombokat, legördülő listákat, tartománycsúszkákat, dátumválasztókat, küldés és alaphelyzet gombokat, aktív szűrők kijelzőjét és AJAX-os lapozást.

Interaktív listákhoz használd, például:

- blogarchívum-szűrők,
- terméksűrők,
- címtárkeresés,
- csapat-/tagszűrők,
- taxonómia-, egyéni mező és WordPress-mező szerinti szűrők,
- rendezési vezérlők,
- oldalankénti elemszám vezérlők,
- élő keresőmezők.

A szűrők egy konkrét lekérdezési ciklust céloznak. A szűrőelemek az oldalon bárhol lehetnek, amíg mindegyik a megfelelő céllekérdezésre mutat.

## A lekérdezésszűrők bekapcsolása

1. Menj a **Bricks → Beállítások** oldalra, az **Általános** lapra.
2. Kapcsold be a **Lekérdezési szűrők** sorban a lekérdezés rendezését, szűrését és élő keresését.
3. Mentsd a beállításokat.
4. Nyisd meg a szerkesztőt.
5. Add hozzá az elemeket a szűrő elemcsoportból.

![A Lekérdezési szűrők beállítása a Bricks beállításai között](./kepek/elemek-szuro-beallitas.webp)

*A Lekérdezési szűrők beállítása a Bricks beállításai között* (https://minta-bolt.hu/wp-admin/admin.php?page=bricks-settings)

A képen a bekapcsolt kapcsoló, az egyéni mezők integrációja és a szűrőindex újragenerálásának gombjai látszanak.

A funkció bekapcsolásakor a Bricks ellenőrzi és karbantartja azokat az egyéni adatbázistáblákat is, amelyeket a szűrőelemek, a szűrőértékek és a háttérindexelő feladatok használnak.

## Hogyan működik?

A lekérdezésszűrők három részből állnak:

1. A szűrőelemek begyűjtik a látogató bemenetét.
2. Egy céllekérdezési ciklus megkapja a szűrők állapotát.
3. A Bricks a szűrők állapotát lekérdezési változókká alakítja, és frissíti a célciklust.

Az első oldalbetöltéskor a Bricks a szűrőértékeket az URL-paraméterekből is beolvashatja. Interakció közben a JavaScript tárolja a kiválasztott szűrőállapotot, szükség esetén frissíti a böngésző URL-jét, AJAX-kérést küld, megkapja a frissített ciklus HTML-jét, frissíti a dinamikus szűrőelemeket és visszaállítja a fókuszt.

A szerveren a Bricks megtisztítja a kiválasztott értékeket, a céllekérdezés típusának megfelelő lekérdezési változókat épít, ezeket egyesíti az eredeti lekérdezéssel, és újra lefuttatja a célciklust.

## Támogatott lekérdezéstípusok

A lekérdezésszűrők ezeket a ciklustípusokat támogatják:

- Bejegyzések,
- Kifejezések,
- Felhasználók.

Nem támogatják:

- az API lekérdezési ciklusokat,
- a Tömb lekérdezési ciklusokat,
- a mélyen beágyazott célciklusokat.

Beágyazott lekérdezéseknél a szűrők a külső, támogatott lekérdezési réteget célozzák. Ne várd, hogy egy cikluson kívüli szűrő egy mélyen beágyazott gyermeklekérdezést célozzon.

## Komponens-korlát

A szűrőelemeket ne helyezd Bricks komponensbe. A célciklus se legyen komponensen belüli ciklus, kivéve, ha maga a komponens gyökéreleme a lekérdezési ciklus. A korlát oka, hogy a szűrők konkrét lekérdezéselem-azonosítókat céloznak, és az AJAX-nak megbízhatóan meg kell találnia és újra kell renderelnie a megfelelő lekérdezéselemet.

## Alapbeállítás

1. Hozz létre egy lekérdezési ciklust.
2. Másold ki a céllekérdezés azonosítóját. Ez általában a hatkarakteres Bricks elemazonosító a `#brxe-` nélkül.
3. Adj hozzá egy vagy több szűrőelemet.
4. Állítsd be a **Céllekérdezés** mezőt minden szűrőelemen.
5. Adj hozzá **Lapozás** elemet, ha a listának lapoznia kell.
6. Kapcsold be az AJAX-ot a **Lapozás** elemen, ha a szűrőkkel együtt kell működnie.
7. Teszteld az első oldalbetöltést, az AJAX-frissítést, a böngésző vissza gombját és az URL-paraméterrel történő közvetlen betöltést.

A szűrőknek nem kell ugyanabban a burkolóban lenniük, mint a lekérdezési ciklusnak. Elhelyezheted őket oldalsávban, fejlécben, offcanvas panelben vagy a lista felett.

## Alkalmazás bevitelkor vagy küldéskor

A szűrőelemek azonnal is érvényesülhetnek, vagy várhatnak egy küldés gombra.

- **Bevitel (Input):** a lekérdezés frissül, amint a látogató módosítja a szűrőt.
- **Küldés (Submit):** a szűrőérték eltárolódik, de a lekérdezés frissítése addig vár, amíg a látogató rá nem kattint egy ugyanarra a lekérdezésre mutató **Szűrés - Küldés / Alaphelyzetbe állítás** elemre.

A bevitel könnyű listákhoz és kereséshez való. A küldést akkor használd, ha az oldalon sok szűrő van, a lekérdezések költségesek, vagy mobil/offcanvas szűrőfelületet építesz.

## Szűrőelemek

### Szűrés - Keresés

A Keresés szűrő szöveges értéket küld a céllekérdezésnek. Bejegyzés-lekérdezéseknél az alap keresés az `s` lekérdezési változót használja. Kifejezés- és felhasználó-lekérdezéseknél a lekérdezéstípus keresési paraméterét. Bejegyzésekhez, kifejezésekhez és felhasználókhoz egyéni keresési feltételeket is beállíthatsz.

Fontos vezérlők:

- **Céllekérdezés:** a frissítendő lekérdezési ciklus.
- **URL-paraméter:** a frontenden használt paraméter neve. Használd az `s` értéket, ha a szűrőnek a natív WordPress-kereséssel kell integrálódnia.
- **Késleltetés (debounce):** a gépelés utáni várakozás a keresés lefuttatása előtt.
- **Minimális karakterszám:** a keresés indításához szükséges legkisebb szövegméret.
- **Keresési feltételek:** egyéni mezők, bejegyzésmezők, kifejezésmezők, felhasználómezők, taxonómiák és súlyozási lehetőségek, ahol támogatottak.
- **Törlés ikon:** lehetővé teszi, hogy a látogató törölje a keresési értéket.
- **Enter művelet:** AJAX-os keresést futtat (alapból), vagy átirányít egy URL-re az aktuális lekérdezés szűrőparamétereivel. Ehhez céllekérdezés kell.
- **Szűrő küldése interakciók indítása:** az Enter-nyomásos AJAX-keresésnél opcionálisan lefuttatja a küldés kezdete/vége interakciókat. A szokásos gépelés és az átirányítás nem futtatja ezeket.

Az Enter azonnal küld, a **Küldés** alkalmazási módban is, anélkül hogy várna a gépelési késleltetésre vagy a minimális karakterszámra. Ha az URL-paraméter az `s` a fő keresési lekérdezésen, a Bricks az aktív Keresés sablon keresési feltételeit használhatja az egyes szűrőelem-beállítások helyett.

### Szűrés - Jelölőnégyzet

Akkor használd, ha a látogató több értéket is kiválaszthat. Támogatott források: taxonómia, WordPress-mező, egyéni mező. Támogatott a hierarchikus taxonómia megjelenítése, kifejezések bevonása/kizárása, csak legfelső szintű kifejezések, darabszám megjelenítése, gyermekkifejezések automatikus kapcsolása és gombstílusú megjelenés. Több kijelölt taxonómia- vagy egyéni mezőérték VAGY (OR) vagy ÉS (AND) logikával kapcsolható, a szűrő beállításától függően.

### Szűrés - Választógomb

Akkor használd, ha a látogatónak egyetlen értéket kell választania. Működhet:

- szűrőként,
- rendezési vezérlőként,
- oldalankénti elemszám vezérlőjeként.

Támogatja a taxonómia, WordPress-mező és egyéni mező forrást, valamint a gombstílusú megjelenítést.

### Szűrés - Kiválasztás

Kompakt, legördülő menüs szűréshez, rendezéshez vagy oldalankénti elemszámhoz. Lehet egyértékű, vagy többértékű, ha a Choices.js és a többszörös kiválasztás be van kapcsolva. A többértékű szűrés ugyanazokat a forrásszabályokat használja, mint a jelölőnégyzet.

### Szűrés - Tartomány

Numerikus egyéni mezőkhöz, például ár, terület, értékelés vagy pontszám. A tartományszűrő egyéni mező forrásadatot használ, és numerikus BETWEEN lekérdezést épít. A Bricks az indexelt legkisebb/legnagyobb értékekből automatikusan beállíthatja a csúszka tartományát. Ha az értékek tizedeseket tartalmaznak, add meg a tizedesjegyek számát, különben az értékek helytelenül hasonlíthatók össze.

### Szűrés - Dátumválasztó

Dátummezőkhöz. Támogatja az egy dátumos és a dátumtartomány módot. A Bricks megtisztítja a dátumválasztó értékeit, és a tartományokat kétértékű formára alakítja a lekérdezési változók építése előtt.

### Szűrés - Aktív szűrők

Megjeleníti a kiválasztott szűrőket, és lehetővé teszi, hogy a látogató eltávolítsa őket. Lehetőségek:

- adott szűrőazonosítók kizárása az aktív szűrők listájából,
- az egyes szűrőkön beállított előtag, utótag és címke,
- az aktív szűrők címkéinek és eltávolító gombjainak stílusa.

### Szűrés - Küldés / Alaphelyzetbe állítás

A **Küldés** akkor kell, ha a szűrőknek várniuk kell a lekérdezés frissítése előtt. Az **Alaphelyzet** törli a céllekérdezés aktív szűrőit. A küldés átirányíthat egy másik URL-re a jelenlegi szűrőértékek megtartásával: ez hasznos például egy nyitóoldali élő keresőmezőnél, amely a látogatót egy találati oldalra viszi.

A **Szűrőazonosítók kizárása** mezővel az Alaphelyzet gomb megtarthat kijelölt szűrőket. Add meg a Bricks elemazonosítóikat vesszővel elválasztva. Például kizárhatod a Keresés szűrőt, hogy a keresett szöveg megmaradjon, miközben a kategória- és ár-finomítások törlődnek. Ez különbözik az Aktív szűrők elem megjelenítési kizárásaitól.

Ha az **Elrejtés, ha nincs aktív szűrő** be van kapcsolva, az Alaphelyzet gomb elrejtőzik, ha nincs aktív, nem kizárt szűrő. A kizárt keresési kifejezés ettől még aktív maradhat, miközben a gomb rejtett. A Bricks a `brx-no-active-filter` osztályt adja ehhez a gombhoz.

A **Küldés** elem AJAX-os küldésnél külön küldés-kezdet és küldés-vége eseményeket is kibocsát. A Szűrő küldése interakció-indítókkal olyan elemeket vezérelhetsz, amelyeknek csak szándékos küldésre kell reagálniuk, például bezárhatsz egy Offcanvas panelt, miután a mobilos szűrőeredmények betöltődtek.

### Lapozás

A **Lapozás** elem akkor vesz részt a szűrőrendszerben, ha az AJAX be van kapcsolva, és ugyanazt a lekérdezést célozza. A Bricks az AJAX-kérések során a lapozást szűrőállapotnak tekinti, így a kiválasztott szűrők és az aktuális oldal együtt maradnak. Ha több **Lapozás** elem célozza ugyanazt a lekérdezést, a Bricks az aktuális oldal állapotát mindegyik lapozáspéldányon frissíti.

## URL-paraméterek

A lekérdezésszűrők az URL-paraméterekből is betölthetők. A Bricks kétféle paraméterstílust támogat:

- `brx_SZŰRŐAZONOSÍTÓ=érték`,
- a szűrőn beállított egyéni, „barátságos” név, például `category=shirts`.

Az oldal betöltésekor a Bricks beolvassa az URL-paramétereket, megkeresi a megfelelő szűrőelemeket, szűrőtípus szerint megtisztítja az értékeket, beállítja az egyes szűrők aktuális értékét, és az eredményül kapott lekérdezési változókat egyesíti a céllekérdezéssel.

Ha az URL-nek ember által olvashatónak kell lennie, használj egyéni barátságos nevet. Ha egyszerű, belső paraméter kell, használd az alapértelmezett `brx_` formátumot. A céllekérdezési cikluson kapcsold be az **URL-paraméterek szűrésének letiltása** lehetőséget, ha a ciklusnak figyelmen kívül kell hagynia az URL-paramétereket akkor is, ha vannak megfelelő szűrők.

## Böngészőelőzmények

Ha az URL-paraméterek be vannak kapcsolva, a Bricks követi a szűrőváltozásokat a böngészőelőzményekben. A látogató a böngésző vissza és előre gombjával léphet a korábbi szűrőállapotok között. A Bricks figyeli a böngészőnavigációt, visszaállítja a céllekérdezés kiválasztott szűrőértékeit, és ugyanazzal az AJAX-szűrési folyamattal frissíti a listát. Teszteld ezt, ha az oldalon egyéni szkriptek is módosítják az URL-t.

## Interakciók

A Bricks interakció-indítókat ad a szűrő állapotához és a szűrő küldéséhez:

- Szűrő: Üres,
- Szűrő: Nem üres,
- Szűrő küldése (Kezdet),
- Szűrő küldése (Vége).

A Szűrő: Üres és a Szűrő: Nem üres indítóval segédfelületi elemeket jeleníthetsz meg vagy rejthetsz el aszerint, hogy egy szűrőelemnek van-e választható opciója vagy értéke. Például tegyél egy burkolót az „Aktív szűrők” címsor és egy **Szűrés - Aktív szűrők** elem köré, majd adj a burkolónak interakciókat:

- Szűrő: Üres: Elem elrejtése,
- Szűrő: Nem üres: Elem megjelenítése.

Az indító a kiválasztott szűrőelemet vizsgálja. Ha az Aktív szűrők elemnek nincs mit mutatnia, a burkoló rejtve maradhat. Ha legalább egy szűrő aktív, megjelenik a címsor és az aktív szűrők listája.

A Szűrő küldése (Kezdet) és (Vége) indítóval olyan műveletet futtathatsz, amely csak akkor indul, amikor egy **Szűrés - Küldés** elem elindítja vagy befejezi az AJAX-os szűrőküldést a kiválasztott lekérdezésnél.

## Hogyan lesz a szűrőértékből lekérdezési változó?

A szűrőértékeket a Bricks a szűrő művelete és forrása szerint alakítja át:

| Szűrő művelete | Eredmény |
|---|---|
| Szűrés taxonómia szerint | taxonómiai lekérdezést ad hozzá |
| Szűrés egyéni mező szerint | meta-lekérdezést ad hozzá |
| Szűrés WordPress-mező szerint | a megfelelő bejegyzés-, kifejezés- vagy felhasználói lekérdezési változót adja hozzá |
| Keresés | keresési változókat vagy egyéni keresési találatazonosító-listát ad hozzá |
| Rendezés | `orderby` és `order` változókat ad hozzá |
| Oldalankénti elemszám | a `posts_per_page` vagy `number` értéket állítja |
| Lapozás | a `paged` értéket állítja |

A Bricks a szűrőváltozókat későn egyesíti, így az aktív szűrők szűkíthetik vagy felülírhatják az eredeti lekérdezést. Az oldalszintű útvonal-környezet (például az aktuális taxonómiaarchívum) is megmaradhat és egyesülhet, hacsak ki nem kapcsolod.

## Egyéni mezők és indexelés

A lekérdezésszűrők egyszerű, indexelhető és összehasonlítható értékekkel működnek a legjobban. Az egyszerű egyéni mezőket a Bricks alapból sima értékként indexeli. Az összetett, szolgáltatóspecifikus mezőkhöz az Egyéni mezők integrációja kell a helyes indexeléshez. A szerializált tömbként vagy összetett objektumként tárolt mezők alapból nem megbízható szűrőforrások.

A támogatott, indexelt szűrőelem-típusok:

- Jelölőnégyzet,
- Dátumválasztó,
- Választógomb,
- Tartomány,
- Kiválasztás.

A Keresés, a Küldés, az Aktív szűrők és a Lapozás dinamikus szűrővezérlők, de nem ugyanúgy indexeltek.

Kapcsold be az **Egyéni mezők integrációja** lehetőséget a **Bricks → Beállítások** oldal lekérdezésszűrők szakaszában, ha a szűrőknek a támogatott szolgáltatók mezőbeállításait kell használniuk.

Ha a szűrő forrása **Egyéni mező**, a Bricks megjeleníti a **Szolgáltató** vezérlőt, ha támogatott szolgáltatók aktívak. Válaszd ki a szolgáltatót, majd a **Meta kulcs** vezérlőben a dinamikus adat választóval jelöld ki a mezőt. A Bricks a dinamikus címkével olvassa a mező beállításait, nem dolgozza fel frontend dinamikus adatként.

Beépített integráció az Advanced Custom Fields és a Meta Box mezőkhöz van. Segítenek a Bricksnek indexelni a szolgáltatóspecifikus mezőértékeket, szűrőopciókat generálni a mezőválasztékokból, kezelni a dátumformátumokat, és helyes egyéni mező lekérdezést építeni azoknál a mezőknél, amelyek nem úgy viselkednek, mint a sima WordPress-meta. Az ACF-támogatás ilyen mezőket tartalmaz: relationship, post object, user, true/false, választó, dátumválasztó és dátum-idő-választó mezők. A Meta Box támogatás a többválasztós mezőket és a post, taxonomy, user és dátum mezőket tartalmazza. A Meta Box egyéni táblás mezőit ez az integráció nem támogatja.

## Szűrőindex

A Bricks a szűrőadatokat egyéni táblákban tárolja, hogy a szűrőopciók és a darabszámok gyorsan előállíthatók legyenek. Az index nyomon követi:

- a szűrőelemeket és a beállításaikat,
- hogy az egyes szűrőelemek aktívak és indexelhetők-e,
- a bejegyzések, kifejezések és felhasználók indexelt értékeit,
- a háttérindexelő feladatokat és előrehaladásukat.

Az index frissül, ha a vonatkozó Bricks adatok, bejegyzések, kifejezések, felhasználók és metaadatok változnak. Nagy oldalakon a háttérfeladatok befejezéséig előfordulhat, hogy nem minden szűrőopció pontos. Az indexelést a **Bricks → Beállítások** oldal lekérdezésszűrők szakaszában kezelheted. Elérhető műveletek:

- **Szűrőindex újragenerálása:** újraépíti az összes indexelhető szűrőelem indexrekordját.
- **Indexfeladat folytatása:** azonnal lefuttatja a függőben lévő indexfeladatokat, nem vár a cronra.
- **Sérült adatbázis javítása:** újraépíti a tárolt szűrőelem-metaadatokat, ha a szűrőelemek hiányoznak, elavultak vagy áthelyezték őket.

Ha az oldalad HTTP-hitelesítéssel védett, a háttérindexelés elbukhat, mert a Bricks nem éri el a saját háttérvégpontját. Ilyenkor add hozzá a hitelesítési fejléceket a Bricks távoli kéréseihez az indexelési művelethez:

```php
add_filter( 'bricks/remote_post', function( $args, $url ) {
  if ( strpos( $url, 'action=bricks_background_index_job' ) === false && strpos( $url, 'action=bricks_system_info_wp_remote_post_test' ) === false ) {
    return $args;
  }

  $username = 'USERNAME';
  $password = 'PASSWORD';

  $args['headers']['Authorization'] = 'Basic ' . base64_encode( $username . ':' . $password );
  return $args;
}, 10, 2 );
```

## Élő keresés

Az élő keresés a lekérdezés eredményét csak egy keresési interakció után mutatja. Beállítás:

1. Adj hozzá egy **Szűrés - Keresés** elemet.
2. Hozz létre egy bejegyzés-, kifejezés- vagy felhasználó-lekérdezési ciklust.
3. A Keresés szűrő **Céllekérdezés** mezőjét állítsd a ciklusra.
4. Kapcsold be az **Élő keresés** lehetőséget a céllekérdezés beállításaiban.
5. Állítsd be az **Élő keresés burkoló szelektora** mezőt arra a burkolóra, amelyik az eredményterületet mutatja/elrejti.

A burkoló szelektor általában az eredményciklus szülőeleme. A Bricks ezzel rejti el az üres élő keresési eredményeket, mutatja a betöltőt az AJAX-kérések alatt, és rejti el az eredménydobozt, ha a látogató a keresés/eredményterületen kívülre kattint.

Az élő keresés az oldal betöltésekor is előkészíti a lekérdezést, hogy a szükséges szkriptek, stílusok, sablonok és felugró ablak tartalmak rendelkezésre álljanak. A frontenden a Bricks addig elnyomja a kezdeti kimenetet, amíg a látogató nem keres.

## Dinamikus adatcímkék

A lekérdezésszűrőkhöz tartozó dinamikus címkék AJAX-szal frissülnek.

- `{search_term_filter:abc123}`: a céllekérdezés aktuális keresési kifejezését jeleníti meg. A Bricks az értéket egy AJAX-szal frissíthető `span`-be csomagolja.
- `{query_results_count_filter:abc123}`: a céllekérdezés aktuális találatszámát jeleníti meg.
- `{search_term}` és `{search_term:abc123}`: statikus keresési találati oldalon használd. A Keresés szűrőelem értékéhez a `search_term_filter` címkét használd.
- `{active_filters_count:abc123}`: a céllekérdezés aktív szűrőinek számát jeleníti meg. Kizárással: `{active_filters_count:abc123 @exclude:'filter1,filter2'}`. A létrehozott `span`-t így stílusozhatod:

```css
span[data-brx-af-count] {
  /* Ide jönnek a stílusok */
}
```

## Keresési feltételek

A Keresés szűrő használhatja az alap keresési viselkedést vagy egyéni feltételeket.

- **Bejegyzésekhez** kereshet bejegyzésmezőkben, bejegyzés-meta kulcsokban és a hozzárendelt kifejezésekben/taxonómiákban.
- **Kifejezésekhez** kifejezésmezőkben és kifejezés-meta kulcsokban.
- **Felhasználókhoz** felhasználói mezőkben és felhasználó-meta kulcsokban.

A súlyozott keresés azonosítókat ad vissza súlyozott relevancia szerinti sorrendben. A Bricks megőrzi ezt a sorrendet, hacsak nincs aktív rendezési szűrő. Minden hozzáadott mező vagy taxonómia költségesebbé teheti a lekérdezést, ezért tartsd szűkre a keresési felületet.

## Egyéni opciófeliratok

Egyéni feliratok a Jelölőnégyzet, Választógomb és Kiválasztás szűrőknél érhetők el. Akkor használd, ha a tárolt érték nem barátságos a látogatónak. Például a `_stock_status` értékeit leképezheted „Készleten” és „Nincs készleten” feliratokra.

## Oldalankénti elemszám

A **Szűrés - Kiválasztás** és a **Szűrés - Választógomb** elem használhatja az **Oldalankénti elemszám** műveletet bejegyzés-, kifejezés- és felhasználó-lekérdezéseknél. A Bricks alapból ezeket az értékeket kínálja:

```
10, 20, 50, 100
```

Az értékeket az **Opciók: Oldalankénti elemszám** mezőben módosíthatod: adj meg vesszővel elválasztott lista az engedélyezett oldalméretekről. Az aktív érték a szűrt kérés céllekérdezésének oldalméretét változtatja. Nem írja át az eredeti lekérdezési ciklus beállítását. Ha **Aktív szűrők** elemet is megjelenítesz, és nem akarod, hogy az oldalankénti elemszám szűrő szerepeljen benne, zárd ki a szűrőelem azonosítóját az Aktív szűrők beállításaiban.

## WooCommerce szűrőforrás

Aktív WooCommerce esetén a Bricks a WooCommerce-t is forrásként adja a támogatott szűrőelemekhez. A támogatott választó- és rendezési opciók a szűrőelemtől függnek:

| WooCommerce opció | Választógomb | Kiválasztás | Jelölőnégyzet | Tartomány |
|---|---|---|---|---|
| Akciós | igen | igen | igen | nem |
| Készleten | igen | igen | igen | nem |
| Kiemelt termékek | igen | igen | igen | nem |
| Terméktípus | igen | igen | igen | nem |
| Értékelés | igen | igen | nem | nem |
| Ár | nem | nem | nem | igen |
| Rendezés ár szerint | igen | igen | nem | nem |
| Rendezés értékelés szerint | igen | igen | nem | nem |

A WooCommerce szűrőket termék-lekérdezési ciklusokon használd. Gyakori kombináció: termékkategória vagy tulajdonság szűrő, készletállapot, ártartomány, értékelés és ár szerinti rendezés.

## Gyakorlati minták

**Archívumszűrő oldalsáv.** Használj lekérdezési ciklust az archívum fő lekérdezéseként, adj taxonómia-szűrőket az oldalsávba, és kapcsold be az AJAX-os lapozást. Hagyd bekapcsolva a lekérdezés egyesítését, hogy a ciklus továbbra is kövesse az aktuális archívum-útvonalat.

**Terméksűrők.** Taxonómia-szűrők a termékkategóriákhoz és tulajdonságokhoz, tartományszűrő az árhoz, jelölőnégyzet vagy kiválasztás a készletállapothoz, és egy rendezési kiválasztó. Új termékszűrők hozzáadása után generáld újra a szűrőindexet.

**Keresőoldal natív `s` paraméterrel.** Állítsd a **Szűrés - Keresés** URL-paraméterét `s`-re, célozd a fő keresési lekérdezést, és állítsd be a keresési feltételeket a Keresés sablonon, ha a szűrő a fő keresési élmény része.

**Nyitóoldali élő keresés.** Használj **Szűrés - Keresés** elemet Küldés átirányítással, vagy élő keresést burkoló szelektorral, ha az eredményeknek a lapon belül kell megjelenniük.

## Hibaelhárítás

**A szűrők nem befolyásolják a listát.** Ellenőrizd, hogy minden szűrőnek helyes a céllekérdezés azonosítója. Ezután nézd meg, hogy a célciklus bejegyzés-, kifejezés- vagy felhasználó-lekérdezés-e.

**A szűrőopciók üresek vagy elavultak.** Generáld újra a szűrőindexet. Ha a szűrőelemet duplikáltad, importáltad, lefordítottad vagy sablonok között áthelyezted, javítsd a szűrőelemek adatbázis-bejegyzéseit is (**Sérült adatbázis javítása**).

**Az URL-paraméterek betöltődnek, de a szűrők nem látszanak aktívnak.** Ellenőrizd a szűrő URL-paraméterét/barátságos nevét, és hogy a szűrőelem még létezik, és ugyanazt a lekérdezésazonosítót célozza.

**A keresés bevitelkor működik, de közvetlen URL-ről nem.** Ha natív keresési viselkedést vársz, használd az `s` URL-paramétert, és tesztelj a Keresés sablon beállításaival. Nézd meg azt is, hogy az **URL-paraméterek szűrésének letiltása** be van-e kapcsolva a lekérdezésen.

**Az AJAX frissíti a ciklust, de a szűrőket nem.** Csak a dinamikus frissítésű elemek frissülnek az AJAX után. Győződj meg arról, hogy a szűrőelem típusa támogatott, és nem rejti el olyan elemfeltétel, amely az oldal normál betöltésén kívül sikertelen.

**A szűrők ütköznek egy másik szűrő bővítménnyel.** Kerüld a Bricks lekérdezésszűrők és olyan bővítmények vagy egyéni kódok együttes használatát, amelyek ugyanazt a lekérdezést újrafuttatják vagy erősen átírják. Az ütközés különösen valószínű, ha másik bővítmény felülírja a lekérdezés végrehajtását az AJAX-os szűréshez.

**A böngésző vissza/előre gombja furcsán viselkedik.** Teszteld, hogy a szűrők az elvárt módon frissítik-e az URL-állapotot. A Bricks visszaállítja a kiválasztott szűrőállapotot böngészőnavigációkor, de az URL-t átíró egyéni szkriptek zavarhatják.
