Tovább a tartalomhoz

API-lekérdezések

Külső JSON API adatainak megjelenítése lekérdezési ciklussal: kérés, engedélyezés, válaszútvonal, lapozás, gyorsítótár, hibák és korlátok.

A lekérdezési ciklus külső API-ból is le tud kérni JSON-adatot, és a visszakapott tömb elemeit cikluselemként jeleníti meg. API-lekérdezést akkor használj, ha az adat nem a WordPressben van:

  • egy külső készletnyilvántartó rendszer termékei,
  • egy nyilvános API receptjei, könyvei, eseményei vagy állásai,
  • egy másik WordPress-oldal REST API-ja,
  • egy egyedi háttérrendszer strukturált adata,
  • egy táblázat vagy no-code eszköz, amely JSON-t ad egy végponton.

Az API-lekérdezési ciklus ebben a sorrendben dolgozik:

  1. A ciklus elem lekérdezéstípusa API.
  2. Az API-beállítások ablakban beállítod a kérést.
  3. A Bricks a legtöbb API-beállításban feldolgozza a dinamikus adatot.
  4. A Bricks összeállítja a kérés URL-jét, fejléceit, engedélyezését, törzsét és lapozási paramétereit.
  5. Ha a gyorsítótár be van kapcsolva, ellenőrzi azt.
  6. A kérést a WordPressen keresztül elküldi.
  7. A JSON-választ dekódolja.
  8. Kinyeri a beállított válaszútvonalat.
  9. A kinyert tömb lesz a lekérdezés eredménye.
  10. A ciklus a tömb minden elemét egyszer jeleníti meg.

Csak tömbadat járható be. Ha a válaszútvonal objektumra, szövegre, számra vagy nem létező útvonalra mutat, a ciklus nem tudja megjeleníteni a kívánt eredményhalmazt.

  1. Adj hozzá egy támogatott ciklus elemet: Tároló, Blokk vagy Div.
  2. Kapcsold be a Lekérdezési ciklus kapcsolót.
  3. A Lekérdezés vezérlőben a Típus legyen API.
  4. Kattints az API-beállítások gombra.
  5. Add meg az API URL-jét és a kérés beállításait.
  6. Kattints az Adatok lekérése gombra az előnézeti panelen.
  7. Állítsd be a válaszútvonalat úgy, hogy a bejárni kívánt tömbre mutasson.
  8. Mentsd az API-beállításokat.
  9. Adj hozzá gyermekelemeket a cikluson belül.
  10. Az egyes elemek mezőit a {query_api} dinamikus címkékkel jelenítsd meg.
https://minta-bolt.hu/lekerdezes-teszt/?bricks=run
A Lekérdezés vezérlő API típussal és az API-beállítások gombbal

A képen az API-beállítások ablak látszik: bal oldalon az API: kérelem beállításai (név, URL, HTTP metódus, engedélyezés, headerek), jobb oldalon az API: Válasz előnézet az Adatok lekérése gombbal. Az ablak tetején a felirat figyelmeztet: ez kísérleti funkció, és API-kéréseknél a lekérdezési szűrők és az összetevők nem támogatottak.

Az ablak bal oldalán a beállítások, jobb oldalán a válasz előnézete van. Építés előtt érdemes az előnézettel ellenőrizni a kérést: ha a Bricks nem tudja lekérni vagy értelmezni a választ, először a kérést javítsd.

Az API-beállítás belső elnevezése, nem kötelező. Ha egy oldalon több API-lekérdezés van, segít megkülönböztetni őket. Például: Books API, Events endpoint, Remote WP posts.

Kötelező. Annak a végpontnak a teljes URL-je, amely JSON-t ad vissza. Például:

https://example.com/wp-json/wp/v2/posts

Az URL-ben a dinamikus adat támogatott. A név és a válaszútvonal nem kapja meg a dinamikus adat feldolgozást.

Két metódus választható: GET és POST. A szokásos, csak olvasó listákhoz GET kell. POST-ot akkor használj, ha az API törzset vár.

A Bricks alapból ezeket a fejléceket küldi:

Content-Type: application/json
User-Agent: BricksBuilder/{CURRENT_VERSION}

A Hozzáadás header gombbal további fejléceket adhatsz meg, vagy felülírhatod az alapértelmezetteket.

Az URL-paraméterek a végpont lekérdezési karakterláncához adódnak. Példa:

Kulcs Érték
limit 5
category news

Ha az URL már tartalmaz lekérdezési paramétereket, a Bricks egyesíti a meglévőket a beállítottakkal.

A kérés törzsének beállításai POST kérésnél jelennek meg. Három törzstípus támogatott:

  • JSON,
  • Form Data,
  • x-www-form-urlencoded.

JSON esetén a nyers JSON-törzset írd be. Űrlap módokban kulcs-érték sorokat adj meg. A lapozási paraméterek is a törzsbe kerülhetnek, ha a lapozás a törzs helyét használja.

A Bricks ezeket támogatja:

  • API-kulcs,
  • Bearer token,
  • Basic Auth.

Az API-kulcsot a fejlécben vagy az URL-paraméterekben is elküldheted. A Bearer token és a Basic Auth az Authorization fejlécet használja.

Érzékeny értékeknél kapcsold be az engedélyezésnél a PHP-konstans használatát. Ilyenkor a Bricks a titkos adatot egy PHP-konstansból olvassa, nem a szerkesztőben tárolja. A konstansok nevei a lekérdezés elemének azonosítójából épülnek fel:

define( 'BRX_QUERY_API_KEY_ABC123', 'your-api-key' );
define( 'BRX_QUERY_BEARER_TOKEN_ABC123', 'your-token' );
define( 'BRX_QUERY_BASIC_AUTH_USERNAME_ABC123', 'username' );
define( 'BRX_QUERY_BASIC_AUTH_PASSWORD_ABC123', 'password' );

Az ABC123 helyére a lekérdezés elemének azonosítója kerül nagybetűvel. Éles hitelesítő adatokhoz használj konstansokat: a szerkesztőben tárolt titkos adatok könnyebben kiszivároghatnak exportban, képernyőképen vagy a csapattagok hozzáférésén keresztül.

Az API-beállítások legtöbb szöveges mezőjében használhatsz Bricks dinamikus adatot. Ide tartozik az URL, a fejlécek, a paraméterek, a törzs értékei és az engedélyezési értékek, ha közvetlenül a beállításokban vannak tárolva.

Szándékosan nem dolgozza fel a dinamikus adatot:

  • az API neve,
  • a válaszútvonal.

A dinamikus API-beállítások a kérés pillanatában, az aktuális oldal környezete szerint oldódnak fel. Ez olyan végpontoknál hasznos, amelyek az aktuális bejegyzéstől, felhasználótól, kifejezéstől vagy az URL állapotától függenek. Példák:

https://example.com/api/events?city={acf_city}
{
"postId": "{post_id}"
}

Az Adatok lekérése gombbal előnézetet kapsz a válaszról. Az előnézetben láthatod:

  • a teljes válaszfát,
  • a kinyert válaszútvonalat,
  • a nyers JSON nézetet,
  • az utolsó lekérés idejét,
  • a hibaállapotot.

Ha az utolsó lekérés óta módosítottad a beállításokat, a Bricks kéri, hogy az előnézet használata előtt kérd le újra az adatokat. Nagy kinyert tömböknél előfordulhat, hogy az előnézet csak az első részt mutatja, de a mentett API-lekérdezés rendereléskor a beállított választ használja.

A Válasz elérési útja megmondja, hogy a JSON-válasz melyik része legyen a ciklus eredménye. Hagyd üresen, ha a válasz legfelső szintje már maga a bejárni kívánt tömb. Beágyazott adatnál pontos jelölést használj:

data.results

Példaválasz:

{
"data": {
"results": [
{ "name": "Recipe A" },
{ "name": "Recipe B" }
]
}
}

Ehhez a válaszhoz az útvonal: data.results.

A ciklusban a query_api dinamikus címkét használd.

Alapmező:

{query_api @key:'name'}

Beágyazott mező:

{query_api @key:'title|rendered'}

A függőleges vonal (|) választja el a beágyazott kulcsokat az aktuális tömbelemen belül.

Az API-válasz előnézetében egy mező fölé víve a kurzort kimásolhatod a kész dinamikus adatcímkét. Parancsikont is létrehozhatsz, ami megjelenik a dinamikus adatok választójában.

Az API-lekérdezési ciklusok támogatják a lapozást, ha az API fogadhat oldal- vagy eltolás-paramétert, és a válasz oldalszámot vagy elemszámot is megad. A lapozás bekapcsolása:

  1. Kapcsold be az API-beállításokban a Van lapozás lehetőséget.
  2. Adj hozzá egy Lapozás elemet az oldalhoz.
  3. Állítsd a Lapozás elemet az API-lekérdezés célzására.
  4. Válaszd ki a lapozási módszert.
  5. Állítsd be, hová küldje a Bricks a lapozási paramétert.
  6. Állítsd be a teljes elem-/oldalszám útvonalát.

A paraméter helye lehet: URL-paraméter, fejléc vagy a kérés törzse.

Akkor használd, ha az API oldalszámot vár, például page=3. A WordPress REST API-hoz:

Beállítás Példa
URL-paraméter page
Oldalankénti elemek paramétere per_page=10
Teljes szám útvonala header.x-wp-totalpages

Oldalszám alapú lapozásnál a Bricks a kinyert teljes értéket az oldalak teljes számának tekinti.

Akkor használd, ha az API eltolást vagy kihagyási értéket (offset, skip) vár, például limit=5&skip=10.

  • Az oldalparaméter legyen az az eltolás- vagy kihagyási paraméter, amelyet a Bricks frissít.
  • Az eltolás kulcsa az a paraméter vagy fejléc, amely az oldalankénti elemszámot tartalmazza.
  • Az oldalankénti elemszám URL-paraméterben vagy fejlécben maradjon, hogy a Bricks ki tudja számolni az oldalak számát.
  • A teljes szám útvonala numerikus teljes elemszámra mutasson.

Eltolás alapú lapozásnál a Bricks a teljes elemszámot elosztja az oldalankénti elemszámmal, így kapja meg az oldalak számát.

Az API-válaszokat a Bricks WordPress átmeneti adatokkal (transient) gyorsítótárazza, ha a Gyorsítótár időtartama (sec) nagyobb, mint 0. Az alapértelmezett érték 300 másodperc (öt perc).

  • A 0 kikapcsolja a gyorsítótárazást.
  • Fejlesztés közben állíts be rövid értéket.
  • Lassú vagy kérésszámra korlátozott API-nál állíts be hosszabbat.

A gyorsítótár kulcsa a kérés részleteiből épül fel: végpont, metódus, fejlécek, URL-paraméterek és törzs. A különböző kérésparaméterek különböző gyorsítótár-bejegyzéseket hoznak létre. Ha az API-válasz nem a várt módon frissül, csökkentsd a gyorsítótár időtartamát, ideiglenesen állítsd 0-ra, vagy kattints az Adatok lekérése gombra az API-beállítások ablakban: ez törli az adott elem API-gyorsítótárát.

A Bricks hibát jeleníthet meg vagy adhat vissza:

  • hiányzó vagy érvénytelen API-végpont,
  • WordPress-kérési hiba,
  • HTTP-hiba (például 401, 403, 404 vagy 500),
  • üres választörzs,
  • JSON-dekódolási hiba,
  • érvénytelen lapozásbeállítás,
  • hiányzó teljes szám útvonal lapozáshoz,
  • olyan válaszútvonal, amely nem a várt adatra mutat.

Gyakori megoldások:

  • Teszteld a végpontot böngészőben vagy API-kliensben.
  • Ellenőrizd, hogy az API JSON-t ad vissza, nem HTML-t.
  • Ellenőrizd a hitelesítő adatokat vagy a PHP-konstansokat.
  • A CORS-t csak akkor ellenőrizd, ha egyéni frontend szkriptek hívják közvetlenül az API-t. A Bricks szerveroldali kéréseket indít a WordPressen keresztül.
  • A válaszútvonal a tömbre mutasson, ne egyetlen objektumra.
  • Hibakeresés közben állítsd ideiglenesen 0-ra a gyorsítótár időtartamát.

Az API-lekérdezési ciklusok szándékosan szűkebbek a bejegyzés-, kifejezés- és felhasználó-lekérdezéseknél:

  • nincsenek lekérdezési szűrők,
  • nincs élő keresés,
  • nincsenek Bricks komponensek,
  • csak JSON-válasz használható,
  • a válasznak tömbre kell feloldódnia,
  • a query_api dinamikus címkéken kívül nincs beépített sémaleképezés,
  • távoli URL-ekről nincs automatikus médiaimport,
  • korlátozott kérésszámú API-knál nincs automatikus újrapróbálkozás vagy késleltetés,
  • a titkos adatokat gondosan, PHP-konstansokon keresztül kezeld.

Ha szűrésre, keresésre, rendezésre vagy összetett adatösszekapcsolásra van szükséged, fontold meg a külső adat WordPressbe szinkronizálását vagy egyéni integráció építését.

  • URL: https://example.com/wp-json/wp/v2/posts
  • URL-paraméter: per_page = 6
  • Válaszútvonal: hagyd üresen, mert a WordPress REST API legfelső szinten tömböt ad vissza.
  • Megjelenítendő mezők:
{query_api @key:'title|rendered'}
{query_api @key:'excerpt|rendered'}
  • URL: https://dummyjson.com/products
  • URL-paraméter: limit = 8
  • Válaszútvonal: products
  • Megjelenítendő mezők:
{query_api @key:'title'}
{query_api @key:'price'}
{query_api @key:'thumbnail'}

A ciklus nem jelenít meg semmit. Ellenőrizd, hogy a válaszútvonal tömbre mutat-e. Ha az API objektumot ad vissza, benne a tömbbel, a válaszútvonalat a beágyazott tömbre állítsd.

Az előnézet működik, de a frontend kimenete elavult. Ellenőrizd a gyorsítótár időtartamát. Az előnézet és a frontend is használhat gyorsítótárazott választ, amíg a gyorsítótár be van kapcsolva.

A hitelesítés egy felhasználónál működik, a másiknál nem. Hitelesítő adatokhoz PHP-konstansokat használj a szerkesztőben tárolt titkos adatok helyett. Ellenőrizd, hogy a konstansok nevei a lekérdezés elemének nagybetűs azonosítóját használják.

A lapozás mindig csak egy oldalt mutat. Ellenőrizd a teljes elemszám útvonalát. Oldalszám alapú lapozásnál az oldalak teljes számára kell feloldódnia, eltolás alapúnál a teljes elemszámra, és a Bricksnek meg kell tudnia állapítani az oldalankénti elemszámot.

Az eltolás alapú lapozás rossz oldalt ad. Az eltolás kulcsa az a paraméter legyen, amely a kiszámított eltolást kapja. A limit=5&skip=10 esetén az eltolás kulcsa a skip, a limit pedig az oldalankénti elemszám.

A dinamikus címkék hiányoznak egy másik böngészőben. Az API-ablakban létrehozott parancsikonok a böngésző helyi tárolójában (localStorage) vannak. Hozd létre újra a parancsikont abban a böngészőben, vagy írd be kézzel a query_api címkét.

A lekérdezési szűrők nem jelennek meg az API-lekérdezés beállításaiban. Ez a normális működés: az API-lekérdezési ciklusok nem támogatják a lekérdezési szűrőket és az élő keresést.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások