WordPressin hook-järjestelmä on keskeinen osa sen laajennettavuutta, mutta hookien ajoitus on kriittinen. Kaksi yleistä hookia, joita usein sekoitetaan, ovat wp_loaded ja init. Molemmat toimivat varhaisessa vaiheessa, mutta niillä on selkeä ero tarkoituksessa ja käyttötilanteissa.
Ymmärtämällä niiden eron voit kirjoittaa lisäosia, teemoja ja mu-pluginsia, jotka toimivat oikein ilman yllätyksiä.
wp_loaded: heti WordPressin latauksen jälkeen
wp_loaded laukeaa heti sen jälkeen, kun WordPressin ydin on ladattu, kaikki tiedostot tuotu ja lisäosat alustettu. Tämä tapahtuu ennen queryn alustamista, rewrite-järjestelmän tarkistusta ja init-hookin ajoa.
Oikea käyttö
wp_loaded on tarkoitettu järjestelmän alustuksiin, jotka eivät riipu querystä ja lisäosien dependency-checkiin. Esimerkkejä:
-
Tarkista PHP-versio ja riippuvuudet
-
Lataa lisäosien autoload
-
Määritä globaalit asetukset
Varoitukset
wp_loaded ei tiedä, mikä postaus tai query on kyseessä, eikä se ole paikka post-typejen rekisteröinnille tai template- ja content-hookien käyttöön.
init: WordPressin alustuksen perustaso
init laukeaa, kun core on ladattu, lisäosat alustettu ja query alustettu mutta ennen renderöintiä. Init-hook on oikea paikka:
-
Custom post typejen rekisteröintiin
-
Taksonomioiden määrittelyyn
-
Shortcodien ja REST-endpointien rekisteröintiin
Oikea käyttö
Esimerkkejä initin käytöstä:
-
register_post_type(’book’, […])
-
register_taxonomy(’genre’, ’book’, […])
-
Lisätä shortcode: [my_shortcode]
-
Rekisteröidä REST API endpoint
Init tapahtuu ennen sivun renderöintiä, joten kaikki rekisteröinnit ehtivät mukaan.
Eroavaisuudet selkeästi
| Ominaisuus | wp_loaded | init |
|---|---|---|
| Ajoitus | Core ja lisäosat ladattu | Query alustettu mutta ei renderöintiä |
| Käyttötarkoitus | Ympäristön alustaminen, dependency check | Post-type, taksonomia, shortcode, REST-endpoint |
| Query käytettävissä | Ei | Ei vielä lopullista template-queryä |
| Soveltuvuus lisäosille | Kyllä, bootstrapping | Kyllä, rekisteröinnit |
Käytännön vinkkejä
-
Bootstrap ja riippuvuudet → wp_loaded
-
Rekisteröinnit ja API → init
-
Plugin-yhteensopivuus → monet lisäosat odottavat initia rekisteröintien ajoituskohtana
-
REST API ja wp_loaded → ympäristön tarkistukseen, endpointit rekisteröidään initissa
Yhteenveto
wp_loaded ja init eivät ole toistensa korvaajia. Oikein käytettynä ne tekevät WordPress-lisäosista ennustettavia, skaalautuvia ja yhteensopivia muiden pluginien kanssa. Väärin käytettynä ne voivat johtaa rikkinäisiin endpointteihin, puuttuviin post-typeihin ja vaikeasti löydettäviin bugiin.
