Feed késleltetése, amíg egy másik feed lefut
Mi a teendő, ha egy feednek egy másik feed eredményére van szüksége, például az új bejegyzés azonosítójára: a késleltetés két kapcsolóponttal.
A legtöbb kiegészítő feedjét a Gravity Forms aszinkron módon dolgozza fel, és a sorrend nincs garantálva. Ez általában nem gond. Akkor viszont igen, ha az egyik feednek a másik feed eredményére van szüksége.
Tipikus példa
Szekció neve “Tipikus példa”Az űrlap a Haladó bejegyzéslétrehozás kiegészítővel bejegyzést hoz létre, majd a Zapier kiegészítővel elküldi a beküldés adatait, benne az új bejegyzés azonosítóját is. Néha ez jól működik. Máskor a Zapier a bejegyzés helyett az oldal azonosítóját kapja, és a későbbi automatizmus elromlik.
Miért számít az időzítés
Szekció neve “Miért számít az időzítés”A feedek egymástól függetlenül futnak, ezért a Zapier-feed előbb is elindulhat, mint hogy a bejegyzéslétrehozó feed végzett volna. Ha a Zapier-nek az új bejegyzés azonosítója kell, annak a bejegyzéslétrehozás befejezése után kell az adatokat lekérnie.
A megoldás: a függő feedet visszatartod addig, amíg az, amitől függ, el nem készül, majd kézzel elindítod.
A megoldás menete
Szekció neve “A megoldás menete”Két kapcsolópont (hook) dolgozik együtt:
| Kapcsolópont | Mit csinál |
|---|---|
gform_is_delayed_pre_process_feed |
Visszatartja a Zapier-feedet addig, amíg a bejegyzés azonosítója meg nem jelenik a beküldésben. |
gform_advancedpostcreation_post_after_creation |
A bejegyzés létrehozása után fut le. Ez a megfelelő pillanat a visszatartott Zapier-feed elindítására. |
A feed elindítását a GFAPI::maybe_process_feeds() függvény végzi. A hozzá tartozó mintakód a két kapcsolópont leírásának példái között van.
Más kiegészítőkkel is működik
Szekció neve “Más kiegészítőkkel is működik”A minta nem csak a Haladó bejegyzéslétrehozásra és a Zapier-re vonatkozik. Bármikor, amikor egy feednek meg kell várnia egy másikat:
- Tartsd vissza a függő feedet a
gform_is_delayed_pre_process_feedkapcsolóponttal. - Kapcsolódj be egy olyan eseménybe, amely akkor fut, amikor az első feed elkészült.
- Ott indítsd el a visszatartott feedet a
GFAPI::maybe_process_feeds()hívással.
A gform_is_delayed_pre_process_feed leírásában további példák is vannak: a Mailchimp késleltetése a felhasználóregisztráció befejezéséig, a Slack késleltetése a felhasználóregisztráció közben, és a Zapier késleltetése a Dropbox-feltöltés végéig.
A feedek közös kezeléséről a Feedek alapjai, a hibakeresésről a Feed-hibaelhárítás fejezetben olvashatsz.
Készült: