Lav et WordPress Child Theme – Hvordan og hvorfor

Teksten kan indeholde reklamelinks

Et WordPress childtema er et tema, der bygger ovenpå et eksisterende forældretema og arver dets design, skabeloner og funktioner. I stedet for at ændre i forældretemaets egne filer, laver du dine tilpasninger i childtemaet. WordPress sætter så de to temaer sammen, når siden vises for de besøgende.

Bruger du f.eks. et tema som Twenty Twenty-Four eller Astra og vil ændre header-layoutet eller tilføje din egen PHP-kode, kan du oprette et tilhørende childtema – ofte kaldet noget i stil med astra-child. Her lægger du dine ændringer, mens selve forældretemaet forbliver urørt og kan opdateres uden at dine tilpasninger forsvinder. Vil du i gang med at bygge din egen WordPress-side fra bunden, kan du kom godt i gang med din WordPress-hjemmeside og lære det grundlæggende først.

Hvorfor skal du bruge et childtema i WordPress?

Når et WordPress-tema opdateres, overskrives alle temaets filer med den nye version. Har du redigeret direkte i forældretemaets skabeloner eller functions.php, forsvinder ændringerne ved opdatering.

Et childtema løser problemet, fordi dine tilpasninger ligger i separate filer. De filer bliver ikke rørt, når forældretemaet hentes ned i en ny version. Du kan derfor opdatere temaet af sikkerhedsmæssige årsager, uden at miste dine tilpasninger af design og funktioner. Adskillelsen mellem dit eget arbejde og selve platformen bidrager også til bedre beskyttelse af hjemmesidens data, fordi du undgår at rode rundt i kernefiler, du ikke selv har styr på.

Fordele ved at bruge et childtema

  • Dine tilpasninger overlever, når forældretemaet opdateres.
  • Alle ændringer samles ét sted, så det er let at se, hvad der er ændret i forhold til originaltemaet.
  • Du kan hurtigt gå tilbage til det oprindelige udseende ved bare at deaktivere childtemaet igen.
  • Nogle temaframeworks, f.eks. Genesis, er bygget til, at man altid arbejder med et forældretema og et childtema sammen.
  • Et childtema kan give en hjemmeside sit eget navn, en beskrivelse og et screenshot – praktisk, hvis du leverer sider til kunder.

Ulemper og begrænsninger ved childtemaer

Et childtema er ikke altid den rigtige løsning. Skal du kun justere farver, skrifttyper eller enkelte layoutvalg via temaets eksisterende indstillinger, er det ofte enklere at bruge feltet til ekstra CSS i Customizeren. Skal du derimod lave meget omfattende ændringer, kan det på et tidspunkt give mere mening at bygge et selvstændigt tema fra bunden. Et childtema med mange tilpassede skabelonfiler bliver nemlig svært at vedligeholde.

Vigtigt at vide: kode, der ikke er direkte knyttet til temaets udseende – f.eks. registrering af custom post types (tilpassede indholdstyper) – bør normalt ligge i et plugin frem for i childtemaets functions.php. Ellers forsvinder funktionaliteten, hvis du skifter tema senere.

Du kan også overskrive hele skabelonfiler fra forældretemaet, f.eks. header.php, footer.php eller single.php, ved simpelthen at kopiere dem ind i childtemaets mappe under samme filnavn og eventuelt samme mappestruktur, f.eks. templates/page.php. WordPress bruger så automatisk childtemaets version i stedet for originalen. Husk dog, at kopierede filer kan komme til at afvige fra forældretemaet, hvis forældretemaet senere opdaterer netop den skabelon – så tjek dem jævnligt op mod den nyeste version.

Sådan opretter du dit eget WordPress childtema trin for trin

At oprette et grundlæggende childtema kræver kun kendskab til fil-upload via FTP og et par kodelinjer, du kan kopiere ind. Du skal have adgang til hjemmesidens filer, typisk via FTP, SFTP eller SSH. Opbevar dine login-oplysninger sikkert i en password manager, frem for i en almindelig tekstfil.

Trin 1: Find frem til temamappen

Log ind via FTP/SFTP og find mappen /wp-content/themes/ i din WordPress-installation. Her skal både forældretemaet og dit kommende childtema ligge.

Trin 2: Opret en ny mappe til childtemaet

Opret en ny mappe inde i themes-mappen. Navnet kan vælges frit, men brug gerne forældretemaets navn efterfulgt af “-child”, f.eks. astra-child, hvis forældretemaet hedder Astra.

Trin 3: Opret style.css med korrekt header

Opret en fil kaldet style.css i den nye mappe. Øverst i filen skal der stå en kommentar med oplysninger om temaet. Den kan se sådan ud:

/*
Theme Name: Astra Child
Theme URI: https://dit-domæne.dk/
Description: Childtema til Astra
Author: Dit navn
Author URI: https://dit-domæne.dk/
Template: astra
Version: 1.0.0
*/

De to vigtigste linjer er Theme Name og Template. Template skal matche mappenavnet på det forældretema, du bygger videre på – ellers kan WordPress ikke koble de to temaer sammen, og childtemaet vil ikke fungere korrekt. Felter som Description og Author URI er valgfrie, men gør det lettere at genkende temaet senere.

Trin 4: Opret functions.php og indlæs forældretemaets stil

Opret dernæst en fil kaldet functions.php i samme mappe. Den skal som minimum indeholde kode, der sørger for, at forældretemaets style.css bliver indlæst:

<?php
function astra_child_enqueue_styles() {
  wp_enqueue_style( ‘astra-parent-style’, get_template_directory_uri() . ‘/style.css’ );
}
add_action( ‘wp_enqueue_scripts’, ‘astra_child_enqueue_styles’ );

Koden bruger wp_enqueue_style() til at indlæse forældretemaets stylesheet, og get_template_directory_uri() peger altid på forældretemaets mappe. Det er den anbefalede metode i dag frem for den ældre @import i CSS, som kan gøre siden langsommere at indlæse. Senere kan du udvide samme fil med din egen funktionalitet, efterhånden som du bygger childtemaet ud.

Trin 5: Tilføj eventuelt et screenshot

Dette trin er valgfrit. Lægger du en billedfil kaldet screenshot.png i childtemaets mappe, viser WordPress den som forhåndsvisning i temaoversigten, så childtemaet er nemmere at genkende blandt de andre temaer.

Trin 6: Aktiver childtemaet

Gå til Udseende > Temaer i WordPress-administrationen. Her skulle dit nye childtema dukke op, og det aktiveres på samme måde som alle andre temaer. Forhåndsvis childtemaet, inden det aktiveres, og tjek at indstillinger fra forældretemaet stadig ser rigtige ud bagefter, da nogle Customizer-tilpasninger kan være knyttet specifikt til det oprindelige tema.

Fejlfinding: Almindelige problemer med childtemaer

Vises childtemaet slet ikke i temaoversigten, matcher Template-linjen i style.css sandsynligvis ikke forældretemaets mappenavn nøjagtigt – tjek stavning og store/små bogstaver. Forsvinder designet helt efter aktivering, mangler functions.php ofte den åbnende PHP-tag, eller også er wp_enqueue_style() ikke sat korrekt op. Virker dine egne funktioner ikke som ventet, kan det skyldes cache – prøv at rydde både browser-cache og et eventuelt cache-plugin, før du fejlsøger videre.

Avanceret brug: Hooks, filtre og egne funktioner i childtemaet

Når du først har et childtema, kan du udvide functions.php med egne funktioner. Et par eksempler: du kan tilføje en tilpasset logo-størrelse med add_image_size(), ændre længden på uddrag med filteret excerpt_length, eller tilføje et widget-område med register_sidebar(). Et vigtigt praktisk poeng er, at functions.php i childtemaet indlæses før forældretemaets egen functions.php – det gør det muligt at ændre eller fjerne funktioner, som forældretemaet ellers ville have kørt.

Childtemaer og blocktemaer (full site editing)

Med moderne blocktemaer, som Twenty Twenty-Four, fungerer meget af tilpasningen anderledes. Her kan du ofte lave stilvariationer direkte i theme.json og overskrive skabeloner i HTML-format via Site Editor, i stedet for at redigere PHP-filer. Childtemaer virker stadig med blocktemaer, men mange enklere tilpasninger kan i dag klares direkte i Site Editor uden et childtema. Et childtema giver typisk stadig mening, hvis du skal bruge egen PHP-funktionalitet eller mere avanceret styling, som Site Editor ikke understøtter.

Opret et childtema automatisk med et plugin

Ønsker du ikke selv at oprette filerne manuelt via FTP, findes der plugins, der kan generere de nødvendige childtema-filer direkte fra WordPress-administrationen. Sådan et plugin analyserer det valgte forældretema og opretter mappe, style.css og functions.php automatisk, og nogle kan også overføre eksisterende widget- og Customizer-indstillinger til det nye childtema. Bruger du i forvejen browserbaserede værktøjer til at effektivisere dit arbejde, kan sådan et plugin være en naturlig del af den samme værktøjskasse. Tag altid backup af sitet – eller arbejd på en testversion – inden du aktiverer et nyt childtema på et site, der allerede er i drift.

Hvornår skal du ikke bruge et childtema?

Skal du kun justere farver, skrifttyper eller enkelte layoutvalg, som temaet i forvejen tilbyder indstillinger til, er et childtema som regel overflødigt. Her er de indbyggede temaindstillinger eller Customizerens felt til ekstra CSS ofte nok. Arbejder du eksternt via FTP eller SSH med adgang til hele sitet, kan det desuden være en god idé at sikre din forbindelse, når du arbejder eksternt. Et childtema giver først rigtig mening, når du laver ændringer, der rækker ud over temaets egne indstillinger, og du ønsker en velafgrænset og genanvendelig måde at holde styr på dem på.

Eksempel
Bruger du temaet Astra og opretter et childtema kaldet astra-child, kan du tilføje din egen CSS og PHP-kode i childtemaet, mens Astra fortsat kan opdateres uden at dine tilpasninger forsvinder.
Ofte stillede spørgsmål
Hvad er forskellen på et childtema og et forældretema?
Forældretemaet indeholder det oprindelige design og de grundlæggende funktioner. Childtemaet arver alt dette, men gemmer dine egne tilpasninger i separate filer, så de ikke overskrives ved opdatering.
Skal jeg altid bruge et childtema, når jeg tilpasser WordPress?
Nej. Skal du kun ændre farver, skrifttyper eller mindre layoutvalg, er temaets egne indstillinger eller Customizerens CSS-felt som regel tilstrækkeligt.
Kan jeg bruge et childtema sammen med et blocktema som Twenty Twenty-Four?
Ja, men blocktemaer bruger ofte theme.json og HTML-skabeloner via Site Editor til mange tilpasninger, så et childtema er ikke altid nødvendigt her.
Hvad sker der, hvis Template-feltet i style.css ikke matcher forældretemaet?
Så kan WordPress ikke koble de to temaer sammen, og childtemaet vil enten ikke vises korrekt eller slet ikke fungere.
Kan jeg oprette et childtema uden at kunne programmere?
Ja, et grundlæggende childtema kræver kun adgang til hjemmesidens filer via FTP og et par kodelinjer, du kan kopiere ind i style.css og functions.php.
Vil du gerne skrive dine egne WordPress-guides eller dele dine erfaringer med childtemaer og andre tekniske løsninger på din egen side? Se hvordan du kommer i gang med at blogge. Sådan kommer du i gang med at blogge →

9 kommentarer til “Lav et WordPress Child Theme – Hvordan og hvorfor”

  1. Hej,
    Hvis man helst vil undgå at rode med child theme osv., kan man blot undlade at opdatere sit tema? Eller giver det nogle andre ulemper senere?
    Pfh tak for svar.

    • Hej Camilla
      Jo, du kan godt undlade at opdatere, men kommer du til at gøre det alligevel, så er du på den. Der findes en anden løsning, som du måske skal overveje. Du kan ændre dit tilrettede standard tema, og gøre det til dit “eget” tema. Derved undgår du opdateringer i fremtiden.
      Kopier hele din tema mappe der ligger i /wp-content/themes og giv den et nyt navn f.eks. Camillas-Tema. I den nye mappe åbner du style.css og retter navnet (Theme Name: Camillas-Tema). Dernæst går du ind i kontrolpanel under udseende og aktiverer Camillas-Tema. Du har nu dit eget tema som aldrig bliver opdateret.
      Håber du kan bruge svaret.
      Venlig hilsen Stig

      • Hej Stig
        Hvis jeg laver mit “eget” tema, hvad så i fremtiden, vil der så blive et tidspunkt, hvor mit eget tema er så forældet at det ikke kan bruges mere (lidt lige som problemer med opdateringer på gamle ipads/iphones)? Hvis ja, er childtheme så en bedre løsning?
        Vh Jonna

        • Hej Jonna

          Hvis du laver dit eget tema, er du selv herre over opdateringer og rettelser. Et childtheme bruges hvis du vil lave tilretninger til et tema, du har downloadet på nettet. Hvis du ændrer direkte i temaets kode, vil ændringerne gå tabt, når producenten af temaet udgiver en opdatering. Det undgår ved at lave ændringerne i et childtheme.

          Hilsen
          Stig – Helpdesken.dk

  2. Pingback: Child themes til Wordpress og hvorfor det er best practise
  3. Vil gerne lære noget mere om “child theme” fordi det indeholder de unikke brugermuligheder jeg søger.
    Har du / I nogle gode links vil jeg være meget taknemmelig.
    Er en ældre here med en god brugerflade og ikke meget mere.

    Mvh.
    A. Eriksen.

  4. Jeg vil ikke rode med Child Theme, og har derfor kopieret hele mit tema og givet det et nyt navn. I den nye mappe har jeg åbnet style.css og rettet navnet der også. -Men SKAL jeg også tilføje: Import url: Importerer originale style.css. ?
    (Du skriver i tråden, at denne linje skal med, da den henter den originale style.css fil.)

Der er lukket for kommentarer.