WordPressin teeman ja lisäosan välinen vastuunjako kokonaisuutena
WordPressissä yksi toistuvimmista arkkitehtuurivirheistä on vastuunjaon hämärtyminen teeman ja lisäosan välillä. Kun rajaa ei vedetä selkeästi, seurauksena on koodia, jota ei uskalleta päivittää, teemoja joita ei voi vaihtaa ja sivustoja, joiden toiminta hajoaa pienestäkin muutoksesta.
Teema ja lisäosa eivät ole vain teknisiä paketteja. Ne edustavat eri vastuita järjestelmässä.
Teeman perusrooli WordPressissä
Teema vastaa esityksestä
Teeman tehtävä on määritellä:
-
miltä sisältö näyttää
-
miten sisältö asettuu näkymään
-
miten käyttöliittymä toimii
Teema käsittelee sisältöä visuaalisena ilmiönä. Se ei omista sisältöä eikä sen logiikkaa.
Hyvä nyrkkisääntö on:
jos teeman vaihtaminen rikkoo datan tai toiminnallisuuden, vastuu on väärässä paikassa.
Lisäosan perusrooli WordPressissä
Lisäosa vastaa toiminnallisuudesta
Lisäosa:
-
lisää ominaisuuksia
-
muokkaa käyttäytymistä
-
käsittelee liiketoimintalogiikkaa
Lisäosa ei välitä siitä, miltä asiat näyttävät. Sen vastuulla on:
-
mitä dataa on olemassa
-
miten sitä käsitellään
-
milloin sitä muutetaan
Lisäosa voi elää useiden teemojen kanssa. Teeman ei pitäisi pystyä rikkomaan lisäosaa.
Sisältö ja sen omistajuus
Kuka omistaa datan
Sisältö:
-
post-tyypit
-
metatiedot
-
taksonomiat
kuuluvat lisäosalle, ei teemalle.
Kun teema rekisteröi:
-
custom post typen
-
custom taksonomian
-
liiketoimintakriittisen metan
syntyy lukitus teeman ympärille. Teeman vaihto tarkoittaa sisällön katoamista käyttöliittymästä, vaikka data olisi edelleen tietokannassa.
Lyhytkoodit ja lohkot
Shortcode-teemassa on varoitusmerkki
Lyhytkoodit ovat:
-
sisällön rakennetta
-
eivät esitystä
Kun shortcode määritellään teemassa:
-
sisältö ei toimi ilman teemaa
-
editoriin jää rikkinäisiä merkintöjä
Shortcodet ja lohkot kuuluvat lisäosiin. Teema voi ainoastaan:
-
tyylitellä ne
-
asettaa layoutin
REST API ja integraatiot
Rajapinnat eivät ole teeman vastuulla
Custom REST endpointit:
-
integraatiot
-
webhooks
-
ulkoiset yhteydet
eivät kuulu teemaan.
Teema ei saa olla se osa, joka:
-
paljastaa dataa ulos
-
käsittelee autentikointia
-
vastaa versionhallinnasta
Teema voi käyttää APIa, mutta ei omistaa sitä.
Admin-logiikka ja käyttöliittymä
Admin ei ole teeman leikkikenttä
Teeman ei tulisi:
-
lisätä admin-sivuja
-
käsitellä asetuksia
-
muokata tallennuslogiikkaa
Adminiin liittyvä logiikka kuuluu lisäosiin. Teeman rooli adminissa rajoittuu korkeintaan:
-
editorin visuaaliseen tukeen
-
lohkojen tyylien määrittelyyn
Suorituskyky ja vastuunjako
Väärä vastuunjako näkyy kuormassa
Kun teema sisältää:
-
raskaita kyselyitä
-
liiketoimintalogiikkaa
-
taustaprosesseja
suorituskykyongelmien debuggaus vaikeutuu. Teema ladataan jokaisella frontend-pyynnöllä, joten virhe maksaa aina.
Lisäosassa logiikka voidaan:
-
rajata kontekstiin
-
kytkeä pois
-
optimoida erikseen
Testattavuus ja ylläpito
Lisäosa on testattavampi yksikkö
Lisäosat:
-
voidaan versionoida itsenäisesti
-
voidaan testata erillään teemasta
-
voidaan poistaa tai korvata
Teema on käyttöliittymä. Kun se sisältää liiketoimintalogiikkaa, testattavuus kärsii.
Poikkeukset sääntöön
Milloin teema saa tehdä enemmän
Joissain tapauksissa teema:
-
on tarkoitettu tiettyyn käyttöön
-
ei ole vaihdettavissa
-
toimii kuin sovellus
Tällöinkin on tärkeää tiedostaa:
-
että lukitus on tietoinen valinta
-
ei vahinko
Tietoinen arkkitehtuuripäätös on aina parempi kuin huomaamaton virhe.
Headless ja moderni WordPress
Vastuunjako korostuu entisestään
Headless-ympäristössä:
-
teema voi kadota kokonaan
-
frontend on erillinen sovellus
-
WordPress on puhdas backend
Tällöin kaikki toiminnallisuus:
-
kuuluu lisäosiin
-
elää teemoista riippumatta
Huono vastuunjako estää headless-siirtymän kokonaan.
Yleisimmät virheet
Tyypillisiä virheitä ovat:
-
custom post typet teemassa
-
shortcodet teemassa
-
API-endpointit teemassa
-
asetusten tallennus teemassa
-
admin-logiikka teemassa
Nämä eivät ole pieniä virheitä. Ne määrittävät koko sivuston elinkaaren.
Milloin vastuunjako on onnistunut
Hyvin jaettu WordPress-arkkitehtuuri:
-
sallii teeman vaihdon ilman toiminnallista rikkoutumista
-
pitää datan tallessa ja ymmärrettävänä
-
tekee järjestelmästä pitkäikäisen
Usein paras mittari on tämä:
kuinka paljon sivusto hajoaa, jos teema vaihdetaan Twenty Twenty -teemaan.
Lopuksi: Teema on iho, lisäosa on luuranko
WordPressissä teema on pinta ja lisäosa on rakenne. Kun nämä sekoitetaan, koko järjestelmä kärsii.
Selkeä vastuunjako ei ole akateeminen harjoitus. Se on käytännöllinen tapa:
-
vähentää teknistä velkaa
-
parantaa ylläpidettävyyttä
-
varmistaa, että WordPress kestää vuosia eteenpäin
Hyvä WordPress-arkkitehtuuri ei tunnu erikoiselta. Se tuntuu itsestään selvältä.
