Otin omat taksonomiat käyttöön Kirjavinkeissä — tämä kun on se tapa, miten sivusto olisi alunperin pitänyt järjestää. Taksonomioihin siirtyminen oli mielenkiintoinen prosessi, joka opetti paljon WordPressin omien taksonomioiden käytöstä. Se toivon mukaan valaisee muuten kenties vähän vaikeaselkoista aihetta.
Miksi taksonomiat?
Kirjavinkeissä on tähän asti ollut tarjolla vain kirja-arvosteluja, jotka on järjestetty kirjailijan mukaisiin kategorioihin (nykyisessä WordPress-suomennoksessa aiheet). Tämä on ihan kätevä tapa, sillä silloin kirjailijan mukaiset arkistot (kaikki saman kirjailijan kirjat yhdellä sivulla) saa näppärästi ja kirjailijalistat syntyvät kätevästi. Toinen vaihtoehto olisi laittaa kirjailija metadataksi avainkenttään (custom fields), mutta silloin arkistot ja muut vaatisivat paljon enemmän työtä.
Kategorioiden käyttämiseen liittyy tiettyjä ongelmia, joista vakavin on se, ettei Kirjavinkeissä voinut julkaista mitään muuta kuin arvosteluja. Siistien URLien toivossa olin säätänyt kaikkien artikkelien osoiterakenteeksi /arvostelut/slugi/, joten muunlaiset artikkelit eivät tähän oikein istuneet (tämä ratkaisu oli osin myös perintöä edellisestä versiosta, joka pyöri Movable Typellä). Kokeilin aluksi erityisellä kategorialla, jota käsiteltiin hieman eri tavoin, mutta lopputulos ei miellyttänyt.
Nyt arvostelut ovat kategoriassa Arvostelut, jolloin saan osoiterakenteenkin oikein yksinkertaisesti /%category%/%postname%/ -muotoilulla ja muut jutut, kuten uutiset, saa sitten omiin polkuihinsa.
Vanhan datan siirtäminen
Tämänkokoisessa projektissa — 1 400 merkintää, satoja kategorioita — on olennaista, että saa tiedot siirrettyä järjestelmästä toiseen mahdollisimman automaattisesti. Se kävi onneksi helposti, sillä WordPressissä varsin monia asia on itse asiassa taksonomia. Avainsanat, aiheet ja omat taksonomiat ovat kaikki samoissa taulukoissa.
Niinpä tehtävä kävikin helposti. Taulussa wp_term_taxonomy kerrotaan, mitkä termit liittyvät mihinkin taksonomiaan. Tarvittiin vain yksinkertainen PHP-skripti, joka kopioi kaikki category-taksonomian termit uuteen kirjailijat-taksonomiaan.
Seuraavaksi käytiin käsiksi wp_term_relationships-tauluun, joka määrittää, mitkä termit liittyvät mihinkin merkintöihin. Tässä kävin läpi uudet kirjailijat-taksonomian termit, hain jokaiselle termin tunnuksen kautta vanhan taksonomian tunnuksen (term_taxonomy_id) ja sitä kautta objektit, joihin ne liittyivät. Sitten vain loin uudet parit, joissa objektit liitettiin uusiin termeihin. Tämä kävi helposti.
Nyt vanha data oli kopioitu uudeksi. Uusi taksonomia on vanhan tapaan hierarkinen lista — hierarkisuutta en sinänsä tarvitse, mutta järjestelmän käyttäjien ja tiedon siirtämisen kannalta vanhan kopioiminen oli kätevää.
Lopuksi vain lisäsin kaikki merkinnät uuteen Arvostelut-kategoriaan ja hävitin vanhat kategoriat.
Muutoksia koodiin
Kirjavinkeissä on teemassa paljon PHP-koodia, johon piti tehdä muutoksia. Tässä oli omat haasteensa, sillä taksonomioihin liittyvä koodi on edelleen Codexissa varsin heikosti dokumentoitua. Esimerkiksi erinomaisen kätevä get_the_terms()-funktio puuttuu täysin — sen yksityiskohdat piti kaivella lähdekoodista.
Jos haluaa tarkistaa, ollaanko taksonomian arkistosivulla, pitää is_category() -funktion sijasta käyttää is_tax(‘taksonomian nimi’) -funktiota. Arkistosivulla taksonomiatermin saa kaivettua näin: $term = $wp_query->get_queried_object();
Tästä saadaan olio, jolla on hyödyllisiä atribuutteja. $term->slug on osoiteslugi, $term->name nimi. $term->count on esiintymisten lukumäärä. Täysi permalinkki haetaan funktiolla get_term_link(termiolio, taksonomian nimi).
Sen sijaan, että haetaan get_the_category()-funktiolla merkintään liittyvät kategoriat, merkintään liittyvät taksonomiatermit haetaan näin:
Tällä saadaan kelattua läpi merkintään liittyvät termit. $term on jälleen kerran oliomuodossa.
Toimiva lopputulos
Tuloksena saatiin Kirjavinkit, joka näyttää entisenlaiselta, mutta toimii astetta fiksummin. Nyt on mahdollista julkaista sekä arvosteluja että muita juttuja. Saa nähdä, onko tälle joustavuudelle paljonkaan käyttöä, mutta ainakin informaatioarkkitehtuuri on astetta fiksumpaa.
Pientä lisälaittoa vaati All in One SEO Pack, jota käytän otsikoiden ja metatietojen muokkaamiseen. Se ei ymmärrä taksonomioista mitään, joten koodia piti hieman puukottaa. Jos jotakuta aihe kiinnostaa, voin pyynnöstä kertoa tarkemmin, mitä tein.
email: mikko (a) mikkosaari.fi
English
suomi 