A Query Builder öt gyakori hibája és javításuk
Üres űrlaplista, nem működő taxonómiaszűrő, meta-klózok rendezése, Current WP Query archív oldalon és lekérdezési változók REST API-n.
Ez a fejezet azt mutatja meg, hogyan használd helyesen a Query Buildert listázásokkal és szűrőkkel, ha bejegyzéseket vagy egyéni bejegyzéstípusokat jelenítesz meg, szűrsz taxonómia szerint, vagy lapozást használsz.
1. A lekérdezés nem adja vissza a kívánt elemeket egy űrlapban
Szekció neve “1. A lekérdezés nem adja vissza a kívánt elemeket egy űrlapban”A hiba akkor jön elő, ha a JetFormBuilder Select, Radio vagy Checkbox mezőjének beállításai nem egyeznek a lekérdezéssel.
A lekérdezés:
- Hozz létre egy Posts Query típusú lekérdezést, a neve legyen például „List for Posts”.
- A General fülön válaszd a Posts bejegyzéstípust és a Published (publish) állapotot.
- A Pagination fül Posts per Page mezőjében korlátozhatod a megjelenített elemek számát.
- Mentsd a lekérdezést.
Az űrlap:
- Készíts új űrlapot, és töröld az alapból megjelenő Hidden és Text mezőket.
- Vegyél fel egy Radio mezőt.
- A FILL OPTIONS FROM értéke legyen Generate Dynamically, a GENERATOR FUNCTION pedig Get values list from JetEngine list options.
- A QUERY ID mezőben válaszd ki az előbb mentett lekérdezést, az OPTION VALUE mezőbe pedig írd be:
post_name, hogy a bejegyzések nevei jelenjenek meg. - Add hozzá az űrlapot egy oldalhoz, és nézd meg a frontenden: a bejegyzések listája látszik a rádiógomboknál.
2. A taxonómiaszűrő nem működik
Szekció neve “2. A taxonómiaszűrő nem működik”A hiba oka többnyire az, hogy összekeverik az igazi Query ID-t és a Custom Query ID értéket. A szűrőknél ez a különbség lényeges.
Példa: vannak bejegyzéseid két kategóriával és egy egyéni bejegyzéstípusod három kategóriával, két különböző Listing Griddel jeleníted meg őket. Ha nem a megfelelő Custom Query ID-t használod, a szűrés után a két lista ugyanazokat az értékeket mutathatja, vagy üres találatot kapsz.
- Készíts egy Posts Query lekérdezést a bejegyzésekre, és a Custom Query ID mezőbe írj egyedi azonosítót, például
filter_for_posts. - Készíts egy Select szűrőt a kategóriák szerinti szűréshez: az adatforrás legyen Taxonomies, a taxonómia Categories.
- Hozz létre két listázást (a bejegyzésekhez és az egyéni bejegyzéstípushoz), és tedd mindkettőt az oldalra. Add az oldalhoz a Select Filter widgetet, és válaszd ki benne a szűrőt.
- A widgetnél a This filter for értéke legyen JetEngine, az Apply type AJAX vagy Mixed, az Apply on pedig Value change. A Query ID mezőbe írd be a lekérdezés Custom Query ID értékét (itt
filter_for_posts). - A szűrendő Listing Grid widget Advanced fülén a CSS ID mezőbe írd be ugyanezt az azonosítót.
- Tedd közzé az oldalt, és próbáld ki a frontenden.
3. Rendezés és szűrés meta-klózzal (Query Class Name)
Szekció neve “3. Rendezés és szűrés meta-klózzal (Query Class Name)”A Query Class Name egy belső érték, amely megmondja a rendszernek, melyik metaszabályt kövesse. Akkor hasznos, ha metadobozzal felvett adatok alapján szűrsz és rendezel.
Példa: a bejegyzéseknek van egy „Rating” metamezőjük, és csak a 3-nál nagyobb értékűeket akarod, értékelés szerint rendezve.
- Nyisd meg a lekérdezés Meta Query fülét, és kattints az Add new clause gombra.
- A Field key/name mezőbe írd:
rating. A Compare operátor legyen Greater than (>), a Value to compare3, a Type Numeric. - A Create name mezőbe írd a klóz nevét, például „Rating Clause”.
- A General fül Order & Order By részén kattints az Add new sorting parameter gombra. Az Order By legyen Order by meta clause, válaszd ki az előbb létrehozott klózt, és állítsd be a sorrendet.
4. A Current WP Query archív oldalon
Szekció neve “4. A Current WP Query archív oldalon”A Current WP Query típussal az archív oldalakon jeleníthetsz meg bejegyzéseket úgy, hogy a lekérdezés a hely szerint változik. Így nem kell minden kategóriaoldalhoz külön lekérdezés.
- Hozz létre új lekérdezést, adj neki nevet, a Query Type legyen Current WP Query.
- A megjelenő Current WP Query részben kattints az Add new page type gombra. A Page Type legyen Categories, a Posts number mezőbe írd a megjelenítendő elemek számát.
- Add hozzá ugyanígy a Post oldaltípust is a saját elemszámával.
- Mentsd a lekérdezést az Add/Update Query gombbal.
- Hozz létre egy archív sablont (ehhez a JetThemeCore bővítmény kell), tedd bele a Listing Grid widgetet, és válaszd ki a bejegyzések listázási sablonját.
- A Custom Query részben kapcsold be a Use Custom Query kapcsolót, és a legördülő listából válaszd ki a lekérdezést.
Az archív oldal így mindig az aktuális kategória bejegyzéseit mutatja. Ha a Bejegyzések → Kategóriák oldalon a kívánt kategória alatti Megtekintés linkre kattintasz, az ahhoz tartozó bejegyzéseket látod.
5. Lekérdezési argumentumok és változók REST API-n keresztül
Szekció neve “5. Lekérdezési argumentumok és változók REST API-n keresztül”A lekérdezési változók a WordPress-lekérdezések viselkedését módosító paraméterek. Ha például a mobilon megjelenő elemek számát korlátozod, külső alkalmazás ezt nem tudja átállítani. A lekérdezési változók ezt lehetővé teszik.
Példa: a Pagination beállításban változóval adod meg az elemszámot.
- A korábban létrehozott lekérdezésnél kapcsold be a Register Rest API Endpoint kapcsolót.
- Add meg a QUERY ARGUMENT NAME értékét (például
posts-count) és a DEFAULT VALUE értékét (például2). - A Pagination részben a Posts Per Page mező melletti Dynamic Tag ikonra kattintva válaszd a Query Variable lehetőséget, és a Variable Name mezőbe írd:
posts-count. - Kattints az Apply, majd az Update Query gombra.
- A működést kipróbálhatod: másold ki a lekérdezésnél megjelenő, lekérdezési argumentumokat tartalmazó REST API-végpont példa-URL-jét, és nyisd meg a böngészőben. Az adatok rendezetlenül jelennek meg, a Pretty-print linkre kattintva viszont látod, hogy csak két bejegyzés szerepel az eredményben.
Gyakori kérdések
Szekció neve “Gyakori kérdések”Használhatom ugyanazt a lekérdezést több oldalon? Igen. A Query Builder egyik fő előnye az újrahasznosíthatóság: egy lekérdezés több Listing Gridet vagy widgetet is kiszolgálhat, így a szűrési logika egységes marad.
Gyorsítja a Query Builder az oldalt? Önmagában nem, de a jól megírt lekérdezések kevesebb felesleges adatbázis-műveletet jelentenek. A jól megírt lekérdezés, a lapozás és a gyorsítótár együtt javíthatja a betöltési időt.
Lekérdezhetek felhasználókat, kifejezéseket és hozzászólásokat? Igen. A Query Builder több típust támogat: bejegyzések, felhasználók, kifejezések, hozzászólások, SQL, REST API és egyéni lekérdezés.
Jobb a Query Builder, mint az Elementor beépített lekérdezése? Rugalmasabb: összetett szűrést, több forrást, újrahasznosítható lekérdezéseket, SQL-t és REST API-kérést is tud.
Működik az egyéni tartalomtípusokkal (CCT)? Igen. CCT-elemekre közvetlenül készíthetsz lekérdezést, anélkül hogy bejegyzéssé kellene alakítanod őket.
Készült: