Tovább a tartalomhoz

Események dátum szerint: jövőbeli, múltbeli és ismétlődő időpontok

Jövőbeli és múltbeli események, az előző havi bejegyzések, az időzóna és az Advanced Date mező összes ismétlődő időpontjának listázása.

Egy egyéni bejegyzéstípus Dátum metamezője alapján külön listába teheted a jövőbeli és a múltbeli eseményeket. Előfeltétel: ingyenes Elementor vagy blokkszerkesztő, aktív JetEngine, egy egyéni bejegyzéstípus (a példában „Események”), amelynek van Dátum típusú metamezője (például event-date), és kitöltött bejegyzések.

A mezőnél kapcsold be a Save as timestamp kapcsolót a JetEngine → Bejegyzéstípusok oldalon a bejegyzéstípus metamezőinek beállításaiban. Enélkül a lekérdezés nem működik.

  1. A JetEngine → Lekérdezéskészítő oldalon add hozzá az új lekérdezést, adj neki nevet, a típusa Posts.
  2. A Posts Query szakasz General fülén válaszd ki a bejegyzéstípust. Ugyanaz legyen, mint a listázási elem forrása.

A további lépések attól függnek, mit akarsz megjeleníteni.

  1. A Meta Query fülön kattints az Add new gombra.
  2. A Field key/name mezőbe írd a Dátum mező nevét, a Compare értéke Greater than.
  3. A Value mező melletti dinamikus címke gombbal válaszd a Today opciót.
  4. A Type értéke Timestamp, a Clause name egy tetszőleges név.
  5. A General fülön az Order & Order By részben kattints az Add new sorting parameter gombra: Order By = Order by meta clause, válaszd ki az imént létrehozott klózt, és az irányt (From lowest to highest values vagy From highest to lowest values).
  6. Kattints az Add/Update Query gombra.

Ugyanígy, de a Compare értéke Less than. A Value mezőben ismét a Today dinamikus címke, a Type Timestamp, a Clause name egy név. Rendezésnél újra az Order by meta clause opciót válaszd, majd mentsd a lekérdezést.

  1. A Date Query fülön kattints az Add new gombra.
  2. Az After mezőbe írd: first day of previous month midnight, a Before mezőbe: first day of this month midnight.
  3. A Compare értéke Equal, a Column pedig Post Date.
  4. Mentsd a lekérdezést.

A mezőkben a PHP relatív dátumformátumai használhatók.

  1. A szerkesztőben add hozzá a Listing Grid widgetet, ha még nincs ott.
  2. A Content beállítások Custom Query fülén kapcsold be a Use Custom Query kapcsolót, és válaszd ki a kívánt lekérdezést.
  3. Tedd közzé az oldalt.

Több Listing Gridet is használhatsz egy oldalon, mindegyikhez más lekérdezéssel (például jövőbeli, múltbeli, előző havi). A jövőbeli lekérdezés az aznapnál későbbi dátumú eseményeket mutatja, a múltbeli a már megtörténteket, az utolsó az előző hónapban közzétetteket.

Ha az események rosszul jelennek meg (például a jövőbeli események múltbeliként látszanak, vagy fordítva), az időzónák eltérése okozhatja. A Today érték a weboldal időzónája szerint számolódik, nem a látogatóéra. Például ha nálad 22:00 van UTC-4 zónában, UTC+0 zónában már 02:00 van, vagyis a következő nap: az „ma” események jövőbelinek számíthatnak. Javítás: Beállítások → Általános → Időzóna, itt a saját időzónádat válaszd.

Miért nincs találat? Ellenőrizd, hogy a lekérdezésben a megfelelő bejegyzéstípus van-e kiválasztva, a metamező neve pontosan egyezik-e (például event-date), a bejegyzéseknek van-e értéke ebben a mezőben, és be van-e kapcsolva a Save as timestamp a Dátum mezőnél.

Miért függ az eredmény a napszaktól? Az időzóna eltérése miatt (lásd fent).

Miért nem jó a rendezés? Ellenőrizd, hogy a rendezés Order by meta clause, a megfelelő klóz van kiválasztva, a mező időbélyegként tárolja az értékeket, és az irány megfelel a céljadnak.

Az Advanced Date mező kezdő- és záródátumának kiírása

Szekció neve “Az Advanced Date mező kezdő- és záródátumának kiírása”

Az Advanced Date mező kezdő- és záródátumát a Listing Grid sablonjában két Dynamic Field elemmel jelenítheted meg. Szükséges hozzá a bekapcsolt Dinamikus naptár modul és egy egyedi bejegyzéstípus; a módszer Elementorban, a blokkszerkesztőben és Bricksben is működik.

  1. Nyisd meg a JetEngine → Metaboxok oldalt, és hozz létre metaboxot az egyedi bejegyzéstípushoz (a példában „Filmek”). A Visibility Conditions részben az Enable For Post Types listában válaszd ki a bejegyzéstípust.
  2. A Meta fields résznél add meg a mező Label értékét (a Name/ID automatikusan kitöltődik, a példában dates), a Field type legyen Advanced Date. Mentsd az Add Meta Box vagy Update Meta Box gombbal.
  3. Nyisd meg a bejegyzéseket, és töltsd ki a mező Start date és Has end date beállítását. Ismétlődő eseménynél kapcsold be az Is recurring kapcsolót, és válaszd ki az ismétlés módját (például „Weekly”). Mentsd a bejegyzést.
  4. A JetEngine → Listázások oldalon hozz létre listázási elemet a bejegyzéstípushoz, és tedd rá a megjelenítendő mezőket a Dynamic Field és a Dynamic Image elemmel.
  5. A kezdődátumhoz vegyél fel egy Dynamic Field elemet: a Source legyen Meta Data, az Object field / Meta field / Repeater key / Component prop mezőbe írd a mező nevét (dates). Kapcsold be a Filter field output kapcsolót, a Callback legyen Format date, a Field format mezőben pedig a %s elé írhatsz szöveget (például „Kezdés: %s”).
  6. A záródátumhoz vegyél fel egy másik Dynamic Field elemet: a Source legyen Meta Data, a mező neve pedig dates__end_date, vagyis a mező neve, két alsó kötőjel és az end_date. A Filter field output és a Format date callback ugyanúgy kell, a Field format pedig például „Vége: %s”.
  7. Mentsd a listázási elemet, és hozz létre egy oldalt, amelyre a Listing Grid elemmel kiválasztod ezt a listázást. Tedd közzé, és ellenőrizd a frontenden, hogy a dátumok helyesen látszanak.

Az Advanced Date adatait a Dynamic Calendar widgettel is megjelenítheted: az ismétlődő események naptárban való megjelenítéséről a Naptár fejezet szól.

Az Advanced Date mező összes ismétlődő időpontja

Szekció neve “Az Advanced Date mező összes ismétlődő időpontja”

Az Advanced Date metamező egyetlen bejegyzéshez rendelhet ismétlődő időpontokat (például egy heti rendszerességű esemény egy bejegyzés maradhat az adatbázisban). A mező az ismétlődéseket külön metarekordként tárolja, ezért az összes előfordulás kiírásához SQL-lekérdezés kell. Előfeltétel: ingyenes Elementor, blokkszerkesztő vagy Bricks, aktív JetEngine. Az eredmény egyedi bejegyzés oldalán és bejegyzéslistában is megjeleníthető.

  1. A JetEngine → Modulok oldalon kapcsold be a Dynamic Calendar modult, és kattints a mentésre.
  2. Vegyél fel Advanced Date típusú metamezőt az egyéni bejegyzéstípushoz: a Bejegyzéstípusok oldalon nyisd meg a típust, a Meta Fields szakaszban kattints a New Meta Field gombra, add meg a Label értéket (a Name/ID automatikusan kitöltődik), a Field type legyen Advanced Date. Kattints az Update Post Type gombra.
  3. Töltsd ki a mezőt az ismétlődő időpontokkal a bejegyzéseknél, és mentsd őket.
  1. A JetEngine → Lekérdezéskészítő oldalon add hozzá az új lekérdezést, a típusa SQL/AI Query.
  2. A Custom SQL Query szakaszban a From table értéke postmeta.
  3. A Where (query clauses) résznél kattints az Add new gombra: Column = meta_key, Operator = Equal, Value = a metamező kulcsa. Ez a feltétel az adott Advanced Date mezőre szűkít.
  4. Adj hozzá még egy feltételt: Column = post_id, Operator = Equal, a Value mezőnél a dinamikus címkével válaszd a Current ID makrót, hogy csak az aktuális bejegyzés időpontjai jöjjenek. A Where Relation értéke And.
  5. Rendezéshez az Order & Order By részben: Order By = meta_value, Order = From lowest to highest values. Így időrendben lesznek az időpontok.
  6. Mentsd a lekérdezést.
  1. Hozz létre új listázási elemet, a forrás a most készített SQL-lekérdezés.
  2. Tegyél bele Dynamic Field widgetet: a Source legyen Meta Data, az Object Field / Meta field / Repeater key / Component prop értéke meta_value. A lekérdezés metarekordokat ad vissza, a mező a tárolt értéket mutatja.
  3. Kapcsold be a Filter field output kapcsolót, és válaszd a Format date callbacket, amely olvasható dátummá alakítja az értéket (a formátumot itt állítod).
  4. Mentsd a listázási elemet.

Nyisd meg az egyedi bejegyzés sablonját (vagy az oldalt, ahol a lista van), tegyél bele egy Listing Grid widgetet, és a Listing mezőben válaszd az ismétlődő időpontokat tartalmazó listázási elemet. Mentsd az oldalt. A frontenden az Advanced Date mező összes ismétlődő időpontja látszik.

Ha az Advanced Date mező Recurrence Format értéke Manually, az időpontokat nem a rendszer generálja, így az SQL-es megoldás nem működik. Ilyenkor (előtte készíts biztonsági mentést) egy PHP-részletre van szükség: az aktív gyermektéma functions.php fájljába vagy a Code Snippets bővítménybe kell elhelyezni, és egy shortcode jeleníti meg az időpontokat. A shortcode az egyedi bejegyzés oldalán vagy a listázási elemben használható:

[get_adv_date_manual_input meta_key='adv_date' separator="<hr>" divider="/"]

Az adv_date helyére a saját Advanced Date metameződ neve kerül. A separator az időpontok közé kerülő HTML-elem, a divider pedig a dátum részeit elválasztó karakter. A shortcode kiírja az összes kézzel megadott időpontot.

Miért nem ad vissza dátumot az SQL-lekérdezés? Ellenőrizd, hogy a bejegyzésnek vannak-e a mezővel generált ismétlődő időpontjai. Ha az ismétlődés kézi, a shortcode-os módszert használd.

Rendezhetem az időpontokat? Igen, az SQL-lekérdezés Order & Order By beállításaiban növekvő vagy csökkenő sorrendet adhatsz meg.

Módosíthatom a dátumformátumot? Igen, a Dynamic Field beállításainál kapcsold be a Filter field output kapcsolót, válaszd a Format date callbacket, és állítsd be a formátumot.

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