Calculated Callback kiegészítő
Számtani műveletek a Dynamic Field widgetben a Calculated Callback kiegészítővel: százalékos növelés és csökkentés, összeg, különbség, szorzás, egyéni visszahívás.
A Calculated Callback kiegészítő a Dynamic Field widgethez ad számítási visszahívásokat, így a megjelenített számmező értékén közvetlenül műveleteket végezhetsz.
Előfeltételek: Elementor (az ingyenes is elég) vagy a blokkszerkesztő; aktív JetEngine, és egy egyedi bejegyzéstípushoz létrehozott listázási sablon. A kiegészítő Szám típusú metamezőkkel működik, ezért vegyél fel ilyen mezőt a típushoz, és töltsd ki néhány bejegyzésnél.
A kiegészítő telepítése
Szekció neve “A kiegészítő telepítése”A kiegészítő külön bővítményként települ.
- Töltsd le a Calculated Callback kiegészítőt a JetEngine fejlesztői eszközök oldaláról, zip fájlként.
- Nyisd meg a Bővítmények → Új hozzáadása oldalt, és kattints a Bővítmény feltöltése gombra.
- Válaszd ki a zip fájlt (vagy húzd a jelölt területre), majd kattints a Telepítés most gombra.
- A telepítés után kattints a Bővítmény aktiválása gombra.
Használat
Szekció neve “Használat”- Nyisd meg azt a sablont, ahová a számított értéket szeretnéd tenni: listázási elemet, egyedi bejegyzés- vagy archívumsablont.
- Add hozzá a Dynamic Field widgetet. A Forrás legyen Metaadat, a Meta mező pedig a számmező (például a napi ár). Ennek Szám típusúnak kell lennie, hiszen számtani műveletet végzel vele.
- Kapcsold be az A mező kimenetének szűrése kapcsolót.
- A Visszahívás listában válaszd a Calculated field értéket.
- A Calculated callbacks listában válaszd ki a kívánt műveletet. A további beállítás az Additional arguments mezőben van.
A számított visszahívások:
| Visszahívás | Működés |
|---|---|
| Növelés százalékkal | Az Additional arguments mezőbe írt százalékkal megnöveli az értéket, az eredményt azonnal kiírja. |
| Csökkentés százalékkal | Az Additional arguments mezőbe írt százalékkal csökkenti az értéket. |
| Mezők összege | Az Additional arguments mezőbe annak a metamezőnek a kulcsát írd, amelyet a forrásmező értékéhez adni szeretnél. |
| Mezők különbsége | Az Additional arguments mezőbe annak a mezőnek a kulcsát írd, amelynek értékét kivonod a forrásmezőéből. |
| Mezők szorzata | Az Additional arguments mezőbe a második tényezőként használt metamező kulcsát írd. Ha a második mező értéke 8, az alapár nyolcszorosa jelenik meg. |
| Egyéni visszahívás | Saját PHP-függvény (lásd lent). |
Egyéni visszahívás
Szekció neve “Egyéni visszahívás”Mielőtt a kódot a sablonba másolod, készíts biztonsági mentést, vagy próbáld ki egy tesztoldalon, hogy hiba esetén vissza tudd állítani a webhelyet.
- A kiegészítő példakódját illeszd be az aktív sablon
functions.phpfájljába (például a Megjelenés → Témafájl-szerkesztő oldalon). - A
custom_callbacknév helyére írd a saját visszahívásod nevét. - A
guests-numberhelyére a mező kulcsát írd, amelyet további számtani értékként használni akarsz. A példában az eredmény a vendégek számától függ: ha 5 és 10 közötti vendég van, más a képlet, mint 10 vagy több vendégnél. Tetszőleges feltételt átírhatsz. - Kattints a Fájl frissítése gombra.
A példában ez a képletrész dolgozik 5 és 10 vendég között:
elseif ( 5 <= $additional_field_value && $additional_field_value < 10 ) { $result = $field_value * $additional_field_value - $field_value * $additional_field_value * 0.1;Ezután a sablonban a A mező kimenetének szűrése bekapcsolása mellett a Calculated field visszahívásnál a Calculated callbacks listában megjelenik az új visszahívás. Válaszd ki.
Az A mező kimenetének testreszabása beállításnál a %s jel elé vagy mögé szöveget írhatsz (például pénznemet).
Mentsd a sablont, és helyezd el az oldalon a Listing Grid widgetet a létrehozott listázással. A frontenden az ár a vendégek száma, a megadott ár és a kódba illesztett képlet alapján számolva jelenik meg.
Példa: életkor vagy tapasztalat években
Szekció neve “Példa: életkor vagy tapasztalat években”A kiegészítővel két év különbségét is kiszámíthatod, így egy felhasználó életkorát vagy szolgálati idejét űrlap és külön mező nélkül, egy Dátum mező értékéből jelenítheted meg. Szükséges: a Profilkészítő modul bekapcsolva és a Calculated Callback kiegészítő aktiválva.
- Metabox felhasználóknak: a JetEngine → Metaboxok oldalon kattints az Új hozzáadása gombra. Add meg a címet („Felhasználói mezők”), a Metabox ehhez legyen Felhasználó, a Láthatósági feltételek részben a Látható itt értéke legyen Felhasználó és profil szerkesztése.
- A Metamezők részben vegyél fel egy Dátum típusú mezőt (például „Munkaviszony kezdete”), és kapcsold be az Mentés időbélyegként kapcsolót. Mentsd a metaboxot.
- A Felhasználók → Összes felhasználó oldalon szerkeszd a felhasználót, töltsd ki a dátumot, és kattints a Profil frissítése gombra.
- A kiegészítő letöltése és aktiválása a fentiek szerint történik.
- A Megjelenés → Sablonszerkesztő oldalon illeszd be a kódot az aktív sablon
functions.phpfájljának végére, majd kattints a Fájl frissítése gombra. ADOBkulcs a visszahívás neve, ezt átírhatod:
add_filter( 'jet-engine-calculated-callback/config', function( $callbacks = array() ) { $callbacks['DOB'] = function( $field_value ) { $dob = getdate( $field_value ); $today = getdate(); $year_diff = $today['year'] - $dob['year']; if ( $today['mon'] > $dob['mon'] || ( $today['mon'] == $dob['mon'] && $today['mday'] >= $dob['mday'] ) ) { return $year_diff; } return $year_diff - 1; }; return $callbacks;} );- A JetEngine → Listázások/komponensek oldalon vegyél fel új elemet, a Listázás forrása legyen Felhasználók, add meg a nevet, és a megjelenítési módot válaszd Elementor-ra.
- Tegyél be egy Dynamic Field widgetet, kapcsold be a A mező kimenetének szűrése kapcsolót, a visszahívás legyen Calculated field, a Calculated callbacks listában válaszd a
DOBvisszahívást. - Kapcsold be az A mező kimenetének testreszabása kapcsolót, és a Mező formátuma mezőbe írd be a kívánt szöveget.
- Tedd közzé a listázást.
A kód két év különbségét számolja, ezért életkorra és tapasztalatra is használható. Ha azokat a felhasználókat szeretnéd listázni, akiknek ebben a hónapban, a mai naptól kezdve van a születésnapjuk, ahhoz SQL-lekérdezés kell, nem ez a kód.
Készült: