Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/hjozsef24/wp-plugin-weekend-adventure/archive/refs/heads/main.zipWordPress plugin a Hétvégi Kalandmentő programjainak megjelenítésére.
A plugin egy shortcode-on keresztül jeleníti meg a programokat, az adatokat pedig egy saját WordPress REST API endpoint szolgáltatja. A programok státuszát PHP oldalon számítja ki a megadott referenciaidő alapján.
Követelmények
- WordPress 6.0+
- PHP 8.1+
- jQuery (WordPress által biztosított)
Installáció
- Másold a
wp-plugin-weekend-adventurekönyvtárat a WordPresswp-content/plugins/könyvtárába, vagy töltsd fel a ZIP fájlt a WordPress adminfelületén. - Aktiváld a WP Plugin Weekend Adventure plugint a WordPress adminfelületén.
- Helyezd el a következő shortcode-ot egy oldal vagy bejegyzés tartalmában:
[hetvegi_kalandmento]
A plugin a data/programs.json fájlból tölti be a programadatokat.
REST API
A plugin saját REST API endpointon keresztül kommunikál:
GET /wp-json/wa/v1/programs
Az endpoint a programadatokat és a PHP oldalon kiszámított státuszt adja vissza.
Példa:
{
"id": 1,
"title": "Pilisi családi panorámatúra",
"location": "Dobogókő",
"start_at": "2026. október 10. 09:00",
"capacity": 20,
"booked": 11,
"difficulty": "könnyű",
"price_huf": "4 900 Ft",
"cancelled": false,
"status": {
"key": "available",
"label": "Elérhető",
"bookable": true
}
}
Az üzleti logika jelenleg a REST API controller és a hozzá kapcsolódó program státuszkezelő osztály között oszlik meg. Ez tudatos döntés volt a feladat kis mérete és tesztfeladat jellege miatt.
Hosszú távú bővítés, éles vagy nagyobb scope esetében inkább Repository → Service → Controller réteget alkalmaznék, ahol a felelősségek egyértelműbben szétválaszthatóak.
A frontend ebben az esetben csak adatmegjelenítésre szolgál, az adatok formázása backend szinten történik. Így frontenden nincs szükség az üzleti logika vagy az adatformázás megkettőzésére, a JavaScript réteg feladata pedig elsősorban a megjelenítés és a felhasználói interakciók kezelése.
Rendezés
A programok státusz alapján kerülnek rendezésre:
- Elérhető
- Kevés hely
- Betelt
- Törölve
- Lejárt
- Nem elérhető
A sorrend célja, hogy a felhasználó először az aktuálisan foglalható programokat lássa, ezen belül pedig előrébb kerüljenek azok, ahol már kevés szabad hely maradt. A nem foglalható programok a lista végére kerülnek.
Azonos státusz esetén a programok kezdési időpont szerint növekvő sorrendben jelennek meg.
Ismert korlátok
- A programadatok jelenleg statikus JSON fájlból érkeznek.
- A foglalási folyamat csak a megjelenítés szintjén van jelen, tényleges foglalás nem történik.
- A programokhoz jelenleg nincs WordPress adminisztrációs felület.
Mivel folytatnám a munkát
-
Általános észrevételek
- Plugin nyelvesítése
- User általi szűrés és rendezés bővítése, valamint modernebb szűrő alkalmazása: több listaelem kiválasztása, kereshető lista
- Szűrés-alapú URL paraméterezés: megosztható link az aktuális szűréssel, valamint szerveroldali szűrés nagyobb adatmennyiség esetén
- UI összehangolása a weboldal design rendszerével
- Kontextustól és projektmérettől függően jQuery helyett más frontend stack használata
-
Backend architektúra kidolgozása
- A plugin adatbázis szinten kezelné a programokat és foglalásokat
- A programok admin felületen feltölthetőek, törölhetőek és szerkeszthetőek lennének
- Foglalások kezelése adminisztrációs szinten
-
A teljes foglalási folyamat kidolgozása publikus / frontend oldalon is
- Jelentkezési folyamat kialakítása UX szinten
- E-mail értesítések küldése
Ráfordított idő
A feladat elkészítésére körülbelül 3 órát szántam, a README fájl megírásával.
AI használat
A fejlesztés során ChatGPT-t használtam a WordPress-specifikus szintaxisok gyorsabb felidézésére, a CSS megírásához és a README fájl formázásához. A javasolt megoldásokat minden esetben ellenőriztem, és a feladat igényei szerint építettem be.