WordPressin Rewrite API on yksi niistä järjestelmistä, joka tuntuu aluksi siltä kuin joku olisi piilottanut sivuston logiikan savuverhon taakse. URLit muuttuvat, parametrit katoavat, ja yhtäkkiä /index.php?post_type=kirja&kirja=dyyni muuttuu muotoon /kirjat/dyyni/. Näyttää taikuudelta. Ei ole taikuutta. On vain sääntöjä.
Rewrite API on WordPressin tapa kääntää ihmisten luettavaksi suunnitellut URLit sisäiseen kyselylogiikkaan. Ihminen näkee siistin osoitteen, WordPress näkee kyselyparametrit. Kaikki ovat tyytyväisiä.
Mikä Rewrite API oikeastaan tekee?
Perusidea on yksinkertainen. Rewrite-järjestelmä:
-
lukee saapuvan URLin
-
vertaa sitä sääntöihin
-
muuntaa URLin queryksi
-
antaa queryn WordPressin käsiteltäväksi
Kun selain pyytää sivua, WordPress ei oikeasti etsi tiedostoa /kirjat/dyyni/. Sen sijaan se ajattelee: “Ahaa, tämä vastaa sääntöä X → tämä tarkoittaa kyselyä Y.”
Rewrite API on siis tulkki URLien ja WordPressin kyselymoottorin välillä.
Kauniit permalinkit eivät ole sattumaa
Kun otat permalinkit käyttöön, Rewrite API astuu näyttämölle. Ilman rewrite-sääntöjä WordPress toimisi täysin querypohjaisesti:
/?p=123
Teknisesti toimiva. Ihmiselle karmea.
Rewrite API mahdollistaa:
-
/blogi/artikkeli/ -
/tuotteet/kategoria/ -
/kirjat/dyyni/
Kyse ei ole vain estetiikasta. Kauniit URLit:
-
ovat luettavampia
-
ovat SEO-ystävällisempiä
-
ovat helpompia jakaa
-
näyttävät vähemmän 2003-vuosimallin webiltä
Rewrite ei muuta dataa – vain reitin
Tärkeä oivallus. Rewrite API ei muuta tietokantaa eikä sisältöä. Se muuttaa vain sitä, miten pyyntö ohjataan.
Sama sisältö, eri reitti.
Tämä tekee rewrite-järjestelmästä elegantin. Se on kerros logiikan päällä, ei logiikan sisällä.
Rewrite-säännöt: logiikka URLien takana
Rewrite API toimii sääntöjen varassa. Jokainen sääntö kertoo:
“Jos URL näyttää tältä → käsittele se näin.”
Käytännössä sääntö sisältää:
-
patternin (miltä URL näyttää)
-
queryn (mitä WordPressille annetaan)
Ajattele rewrite-sääntöjä karttana. URL on lähtöpiste, query on määränpää.
Miksi kaikki tuntuu joskus hajoavan?
Rewrite-järjestelmä tallennetaan tietokantaan. Kun:
-
lisäät custom post typen
-
lisäät custom taxonomy
-
muutat slugia
-
rekisteröit rewrite-sääntöjä
WordPress ei automaattisesti päivitä sääntöjä joka pyynnöllä. Se olisi tehotonta.
Siksi joskus tarvitaan klassinen rituaali:
Asetukset → Permalinkit → Tallenna
Ei mystiikkaa. Rewrite cache flushataan.
Custom Post Type ja Rewrite API
Custom post typet ovat rewrite-järjestelmän lempiasiakkaita. Kun rekisteröit CPT:n, WordPress luo rewrite-säännöt automaattisesti.
Kun määrittelet:
-
slug
-
archive
-
rewrite-asetukset
Määrittelet samalla URL-arkkitehtuurin.
URL-arkkitehtuuri on UX-suunnittelua
URL ei ole vain tekninen detalji. Se on käyttöliittymä.
Vertaa:
-
/post/?id=42 -
/kirjat/scifi/dyyni/
Toinen kertoo ihmiselle jotain. Toinen kertoo vain koneelle.
Hyvin suunniteltu URL:
-
viestii rakennetta
-
kertoo kontekstin
-
vähentää kognitiivista kitkaa
Rewrite API ei ole vain backend-työkalu. Se on informaatiodesignia.
Rewrite API ilman pelkoa
Rewrite APIa vältellään usein, koska se näyttää monimutkaiselta. Regexejä, sääntöjä, queryjä. Mutta peruslogiikka pysyy samana:
Pattern → Query
Kun tämän sisäistää, rewrite muuttuu hallittavaksi.
Ajatusmalli, joka helpottaa elämää
Rewrite ei ole magiaa. Rewrite on reititystä.
URL on vain merkkijono. WordPress yrittää sovittaa sen sääntöihin. Jos sääntö täsmää, WordPress tietää mitä tehdä.
Jos mikään ei täsmää → 404
Ei mysteeriä. Ei kohtaloa. Ei kosmista epäoikeudenmukaisuutta.
Yleisimmät rewrite-kompastuskivet
Rewrite-ongelmat noudattavat yleensä tuttuja kaavoja.
Slug-konfliktit.
Kaksi asiaa yrittää käyttää samaa URL-tilaa.
Unohdettu flush.
Säännöt eivät päivity.
Liian geneerinen pattern.
Regex nappaa liikaa.
Väärä query.
WordPress ei saa oikeaa dataa.
Rewrite-ongelmat ovat harvoin satunnaisia. Ne ovat loogisia – joskus vain armottoman loogisia.
Rewrite API ja suorituskyky
Rewrite-järjestelmä ei ole ilmainen. Jokainen pyyntö käy sääntölistan läpi.
Hyvä uutinen: WordPress optimoi tätä aggressiivisesti.
Huono uutinen: Tuhannet rewrite-säännöt voivat hidastaa sivustoa.
Tämä näkyy erityisesti:
-
massiivisissa multisite-asennuksissa
-
erittäin monimutkaisissa CPT-rakenteissa
-
plugin-viidakossa
Rewrite on tehokas, mutta ei ääretön.
Lopuksi: Rewrite API on arkkitehtuuria, ei temppuja
Rewrite APIa ei kannata ajatella kikkailuna. Se on osa sovellusarkkitehtuuria.
Hyvin suunniteltu rewrite-rakenne:
-
tekee URLit ymmärrettäviksi
-
tekee sivustosta loogisemman
-
tekee debuggaamisesta helpompaa
-
tekee käyttäjäkokemuksesta sulavamman
Huonosti suunniteltu rewrite-rakenne:
-
synnyttää 404-helvetin
-
aiheuttaa slug-konflikteja
-
tekee sivustosta hauraan
Rewrite API ei ole mustaa magiaa. Se on järjestelmällistä reititystä. Kun logiikka on selkeä, rewrite muuttuu tylsän luotettavaksi. Ja tylsä luotettavuus on ohjelmistokehityksen korkein hyve.
