Introduktion
Et child theme er et underordnet tema i WordPress. Det arver design og funktioner fra et parent theme, men kan indeholde egne styles, skabeloner og kode. Formålet er at bevare tilpasninger, når det overordnede tema bliver opdateret.
Hvis en udvikler ændrer direkte i et købt eller standardtema, kan ændringerne blive overskrevet ved næste opdatering. Med et child theme ligger de egne filer separat. WordPress bruger dem, når de findes, og falder ellers tilbage til parent theme.
Et child theme er ikke nødvendigt for enhver lille CSS-rettelse. Moderne WordPress kan håndtere noget design gennem editor, temaindstillinger eller ekstra CSS. Valget afhænger af omfang, temaets arkitektur og hvor længe tilpasningen skal leve.
Det er heller ikke en universel løsning på specialfunktioner. Funktioner, der skal overleve et fremtidigt temaskifte, hører ofte bedre hjemme i et WordPress-plugin. Temaet bør primært styre præsentation, mens forretningslogik placeres mere uafhængigt.
På en WooCommerce-webshop bruges child themes ofte til styles og skabelonjusteringer. Her kræver kopierede WooCommerce-skabeloner særlig opmærksomhed, fordi de kan blive forældede, når pluginet ændres.
Sådan bruger du det i praksis
Opret en separat mappe i `wp-content/themes` med mindst en korrekt `style.css`, der angiver parent theme som Template. Tilføj kun de filer, der faktisk skal ændres. Parent theme skal fortsat være installeret.
Indlæs styles efter WordPress' og temaets anbefalede metode. Nogle parent themes håndterer child styles automatisk, andre kræver enqueue i `functions.php`. Kopiér ikke ukritisk en tilfældig kodebid, fordi temaers indlæsningsrækkefølge kan være forskellig.
Brug hooks og filtre, når temaet tilbyder dem. De gør ofte tilpasningen mindre sårbar end at kopiere en hel skabelon. Hvis kun én lille del skal ændres, er en målrettet funktion bedre end en kopi, der senere går glip af 200 linjers opdateringer.
Når en skabelon må overskrives, dokumentér original fil, version, årsag og egne ændringer. Ved en opdatering kan den sammenlignes med den nye parent-fil. Versionsstyring gør forskellene langt lettere at se.
Test ændringer i et stagingmiljø. Kontrollér desktop, mobil, formularer, login og eventuelle webshopflows. Et child theme kan påvirke alt fra header til checkout, selv om ændringen ser lokal ud.
Tag backup før opdatering og hav en rollback-plan. Opdatér parent theme på staging først, gennemgå fejl og outdated templates, og flyt derefter den testede version til live efter en plan.
Eksempel
En virksomhed bruger et standardtema, men har brug for en særlig case-skabelon, egne knapstyles og en justeret header. Den tidligere leverandør har ændret direkte i parent theme. Opdateringer er derfor blevet undgået i to år af frygt for at miste designet.
Først sammenlignes temaet med en ren version. De direkte ændringer identificeres og flyttes til et nyt child theme. Nogle kan løses med CSS, andre med hooks, og kun én skabelon behøver at blive kopieret.
Parent theme opdateres på staging. Den kopierede skabelon sammenlignes med den nye version, og relevante sikkerheds- og markupændringer flettes ind. Siden testes derefter på mobil og med tastatur.
Efter flytningen kan temaet igen opdateres løbende. Child theme gør ikke opdateringer risikofrie, men det gør egne ændringer synlige og adskilte. Det er en langt bedre vedligeholdelsesposition end en skjult blanding.
Virksomheden bruger guiden om CMS og redigering til at forklare redaktørerne, hvorfor den tekniske temastruktur ikke ændrer deres almindelige arbejde i WordPress.
Faldgrube
Den største faldgrube er at kopiere for mange filer “for en sikkerheds skyld”. Hver kopi overtager ansvaret fra parent theme. Når originalen senere får en fejlrettelse eller ny struktur, kommer ændringen ikke automatisk ind i child-versionen.
En anden fejl er at placere alle funktioner i child theme. Hvis en kundespecifik posttype, integration eller beregning forsvinder ved et temaskifte, er funktionaliteten for tæt koblet til designet. Flyt varig forretningslogik til et plugin.
Pas på kode fra gamle guides. WordPress, PHP og themes udvikler sig. En løsning fra 2017 kan bruge forældede funktioner eller en forkert indlæsningsmetode. Kontrollér altid mod den aktuelle dokumentation og det konkrete tema.
Et child theme beskytter ikke mod dårligt skrevet kode. Fejl i `functions.php` kan stadig gøre siden utilgængelig. Brug versionsstyring, staging og adgang til filsystemet, så en fejl kan rettes uden at være afhængig af WordPress-admin.
Endelig kan navnet skabe falsk tryghed. Et child theme bliver ikke automatisk vedligeholdt. Kopierede filer, CSS og integrationer skal stadig gennemgås, når WordPress, PHP, WooCommerce eller parent theme ændres.
Godt at vide
Child theme og parent theme er begge aktive dele af løsningen, men kun child theme vælges som aktivt i WordPress. Hvis parent theme fjernes, mangler child theme sit fundament.
`functions.php` i child theme erstatter normalt ikke parent-filen; begge indlæses. Skabelonfiler kan derimod overskrive tilsvarende filer. Denne forskel er vigtig, når en tilpasning planlægges.
Block themes og Site Editor har ændret nogle arbejdsgange. Mange visuelle ændringer kan gemmes i database eller theme.json. Et child theme kan stadig være relevant, men løsningen bør passe til den konkrete tematype.
WooCommerce viser ofte en advarsel om outdated templates, når kopier i temaet ikke matcher aktuelle pluginversioner. Advarslen bør undersøges, ikke bare skjules. Nogle ændringer er uvæsentlige, andre påvirker funktion og sikkerhed.
Et custom theme kan også have et child theme, men i en kontrolleret specialløsning kan udviklerteamet vælge andre metoder. Child theme er især nyttigt, når parent theme opdateres uafhængigt af de lokale tilpasninger.
God dokumentation bør fortælle, hvorfor hver ændring findes. Kommentaren “fix header” er ikke nok. Beskriv den konkrete adfærd, reference til opgave og eventuelle afhængigheder.
Hvornår er det den rigtige løsning?
Brug child theme, når præsentationsændringer skal overleve opdateringer af et parent theme, og temaet er bygget til denne arbejdsform. Det er et stærkt argument ved varige skabelon- og styleændringer.
Brug i stedet plugin, når funktionen skal leve videre efter et temaskifte. Brug editor eller temaindstillinger, når ændringen er understøttet og kan gemmes uden kode.
Undgå at vælge metode efter, hvad der er hurtigst i dag. Vurder hvem der skal vedligeholde løsningen, hvor ofte parent theme opdateres, og hvor kritisk funktionen er.
Den bedste løsning er den, hvor næste udvikler kan finde, forstå og opdatere ændringen uden at gætte.
Vedligeholdelse efter opdatering
Efter en parent-opdatering bør ændringsloggen læses, før alt godkendes. Kig især efter skabeloner, hooks og funktioner, som child theme bruger. En visuel kontrol alene kan overse ændret markup eller forældede funktioner.
Sammenlign kopierede skabeloner med de nye originaler. Flet kun de nødvendige forskelle og bevar den lokale tilpasning tydeligt. Et versionsstyringsværktøj gør denne opgave mere sikker end manuel læsning i to browserfaner.
Ryd relevante caches og test som både gæst, redaktør og kunde, når rollerne har forskellige oplevelser. På WooCommerce bør kurv, checkout, konto og e-mails indgå i kontrollen.
Opdater dokumentationen med parent-version, testdato og eventuelle tilpasninger. Det gør næste opdatering hurtigere og viser, hvor længe en kopieret fil har været urørt.
Hvis vedligeholdelsen bliver uforholdsmæssigt tung, bør tilpasningen revurderes. Måske kan den erstattes af en hook, en blok eller en mere stabil pluginfunktion.
Overdragelse til næste udvikler
En god overdragelse indeholder en liste over ændrede filer, egne hooks, afhængigheder og kendte begrænsninger. Den bør også forklare, hvilke ændringer der er bevidst placeret i plugin frem for tema.
Fjern døde forsøg og kommenteret kode før overdragelsen. Et child theme med fem års midlertidige løsninger er svært at vurdere og gør hver opdatering dyrere end nødvendigt.
Et sidste sikkerhedstjek
Kontrollér at child theme ikke indeholder adgangskoder, API-nøgler eller miljøspecifikke adresser. Sådanne værdier bør ligge i en sikker konfiguration og ikke følge temaet mellem installationer.
Kør også en kodekontrol mod den PHP-version, hostingen bruger. Et tema kan se korrekt ud, men give advarsler eller fejl efter en serveropgradering, hvis gamle funktioner stadig er i brug.
Temaet på en firmaside
På en almindelig firmaside kan child theme samle header, cases og særlige sektioner, mens redaktøren fortsat arbejder i WordPress som normalt. Den tekniske opdeling behøver ikke gøre daglig redigering mere kompliceret.
WordPress Developer Resources – Editing Files
WooCommerce Developer Documentation – Set up a child theme
Senest opdateret