Sådan laver du et child theme i 5 simple skridt

Det er virkelig ikke så svært, så nu jeg står og skal lave et child theme til mit Twenty Fifteen tema, kan du jo lige så godt se med

Grunden til at jeg opretter et child theme er fordi jeg gerne vil have et logo (billede) ind i sidebaren istedet for temaets standard sidetitel og tagline som du kan ændre under Udseende > Tilpas, i wp-admin.

Under Udseende > Tilpas finder du din sidetitel som er navnet på din hjemmeside, og mulighed for en beskrivelse.
Under Udseende > Tilpas finder du din sidetitel som er navnet på din hjemmeside, og mulighed for en beskrivelse.

Jeg vælger at lade felterne, og især beskrivelsen være udfyldt og afkrydset til at blive vist i headeren, selvom jeg rent faktisk kommer til at fjerne dem i mit kommende child theme. Det gør jeg for at bruge felterne her til at give min side en meta beskrivelse som måske kan hjælpe lidt på SEO’en 😉


Nu er vi klar til at oprette de filer et Child tema består af.

Faktisk er det kun en fil, nemlig style.css altså en cascading style sheet fil som skal ligge i et bibliotek med det navn du gerne vil have at dit child theme skal hedde.

UPDATE:

Tiderne skifter og min viden skulle lige opdateres, så selvom videoen her viser noget der fungerer, så anbefaler WordPress nu at man enqueuer (sætter i kø) ens style sheet filer, og ikke laver en @import som var den gamle måde.

For at få det til at lykkedes er det nødvendigt at have en functions.php fil i ens child theme også. Så artiklen er så den reflektere denne best practice.

Se en video af mig der går gennem de 5 skridt på ca 35 sekunder 😉
#oldschool @import måde – fyfy…

 

1.

Via FTP, f.eks. FTP programmet FileZilla skal du navigere ind til dit tema bibliotek i din WordPress installation.

Det ser nogenlunde sådan ud:

/wp-content/themes/

Vær opmærksom på at der godt kan være et par biblioteker FØR dine WordPress filer når du browser dig frem til dem via FTP, f.eks. WWW/ eller HTDOCS/.

 2.

Opret et nyt og tomt bibliotek under themes/. Jeg vælger at oprette et tema kaldet dejliglama2015, så mit bibliotek kommer til at se sådan ud:

/wp-content/themes/dejliglama2015/
Læg mærke til at dejliglama2015 er åbent, men tomt
Læg mærke til at dejliglama2015 er åbent, men tomt.

Jeg anbefaler at bruge små bogstaver hele vejen gennnem ens biblioteks og fil navne generelt, da det er det flest servere kan forstå.

Store bogstaver, æ,ø,å og andre special tegn her under også mellemrum skal man holde sig fra når der oprettes filer eller biblioteker.

3.

Gå ind i dit nye bibliotek og opret en ny fil. Filen skal hedde style.css

wp-content/themes/dejliglama2015/style.css

style.css fil oprettet men tomNavnet style.css er vigtigt, da det er den fil WordPress kigger efter for at finde ud af hvad der gemmer sig i et bibliotek under /themes mappen.

Når et tema er aktivt inde i wp-admin, aflæses style.css filen for at afgøre hvorledes temaet tager sig ud.

4.

Vi skal nu sørge for at vores nye mappe og ene fil faktisk ER et tema, men vi laver ikke et helt tema, men vælger blot at refererer et eksisterende tema for de elementer WordPress måtte kræve af et tema, hvis de da ikke findes i vores child theme mappe.

En gang til – altså, vi laver et tema, men siger til WordPress – “HEY, hvis du ikke kan finde de filer du plejer at bruge til at vise et tema, så kig lige i den her mappe.” Vi skal altså angive den her anden mappe, også kaldet parent mappen, eller parent theme.

WordPress vil i vores tilfælde så kigge efter ALLE andre filer end den ene vi har lavet, nemlig style.css. Og faktisk vil WordPress ikke nøjes med at kigge på filerne, men også inde i dem, så selvom vi har style.css så har parent temaet jo også en style.css. Dens design elementer, altså css’en vil gøre sig glædende i alle de tilfælde hvor vores child theme IKKE har en css definition.

Et Child theme overskriver på den måde de  CSS definitioner et parent tema måtte have.

Her kan du se hele den tekst, eller KODE som du skal skrive ind i din tomme style.css

/*
 Theme Name: Twenty Fifteen Child
 Description: A Twenty Fifteen Child Theme
 Author: DejligLama
 Author URI: http://example.com
 Template: twentyfifteen
 Version: 1.0.0
*/

/* =Dit child temas css overskrivninger starter her
-------------------------------------------------------------- */

Alt tekst der står mellem en /* og en */ er en kommentar, og ikke noget kode andre systemer end WordPress bruger til noget.

“Theme name:” er dit selvvalgte navn til dit tema. Her må du gerne være vildere end dejliglama2015, og det kunne f.eks. godt hedde DejligLama child tema for 2015.

“Description:” er en forklaring til temaet som vises i wp-admin området under Udseende – Temaer, så her kan det betale sig at give en forklaring på hvad dette tema gør eller kan.

“Author:” er dit navn, gerne dit WordPress.org brugernavn så folk kan finde dig hvis de gerne vil have hjælp 😉

“Author URI:” er en henvisning til hvor folk kan finde dig på nettet.  Det er måske ikke super relevant hvis du bare laver dit eget tema, men det er her du kan finde ophavsmanden til andre temaer du bruger.

“Template:” er SUPER VIGTIG, og skal være 100% lig med parent temaets biblioteksnavn. I mit tilfælde er det “twentyfifteen” med små bogstaver lige som biblioteksnavnet.

Det er blandt andet her vi fortæller WordPress at vi bygger dette tema oven på et andet, en template 😉

“Version:” ikke vigtig, men for kodenørder er det godt at holde styr på hvor mange gange man har været igang med at ændre på ens kode 😉


For at give vores nye style.css fil vægt, skal den enqueues via en functions.php fil

Når vi sætter vores nye style.css fil i kø efter parent temaets style fil, vil vores child theme overskrive parent temaets styles.

functions.php filen oprettes på samme måde som style.css, og skal indeholde:

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array('parent-style')
    );
}

Her beder vi WordPress sætte parent themets style.css i kø før vores child theme style.css.

Alt fra parent temaets style.css kommer altså til at stå før de CSS definitioner vi laver i vores child theme. Det er derfor vi kan overskrive et parent themes CSS.

Min style.css fil kommer med mit child theme navn til at se således ud:

/*
 Theme Name: DejligLama 2015
 Description: Et Twenty Fifteen Child Theme
 Author: DejligLama
 Author URI: http://dejliglama.dk
 Template: twentyfifteen
 Version: 1.0.0
*/

/* =Theme customization starts here
-------------------------------------------------------------- */

5.

Når style.css og functions.php filerne er gemt, er det tid til at gå ind under Udseende > Temaer.

Før musen hen over temaet med dit navn, og tryk på den grå “Aktiver” knap.
Aktiver dit child theme

Skete der ikke noget specielt ? – Så har du gjort det hele rigtigt, og din side kører nu et tomt child theme, klar til dine egne CSS ændringer (og meget mere).

 

7 Replies to “Sådan laver du et child theme i 5 simple skridt”

  1. Hej Kåre

    Tak for en letforståelig guide. Jeg har et spørgsmål til hvordan man opretter .css og specielt .php filen. Jeg har brugt Total Commander (tidl. Norton Commander) til at forbinde til FTP serveren (er megastolt af mig selv!) og har oprettet mappen uden problemer. Det lykkes mig at lave style.css filen i Notepad og selv om den stod til at blive gemt som txt-fil (jeg kunne ikke vælge andre formater), gemte den dog som css da jeg kaldte den style.css. Jeg prøvede det samme med functions.php-filen, men den blev gemt som en txt-fil med navnet functions.php. Vil det fungere, eller skal jeg oprette filen i et andet program og hvilket?

  2. Man finder ofte først selv svaret på ens problem, når man spørger om hjælp.. Jeg fik en gammel it-gut til at hjælpe med at omdøbe til php-fil via dossen – og fandt bagefter ud af at jeg også kunne omdøbe via Total Commander/ FTP-programmet 🙂

    1. Hej Marie
      Jeg har haft hovedet under armen efter lille sønnike kom til verden, og slet ikke reageret på dine kommentarer – Undskyld! Og samtidig FEDT at du kan og gør selv 🙂

      Mht. Filnavne, så er det selvfølgelig ret vigtigt at du bruger et værktøj der er rettet mod webudvikling, så det kender og forstår de gængse filformater som .css og .php.

      Med Filnavne I Server henseende, er vi stadig ret gammeldags og jeg anbefaler altid at man husker på:

      – kun små bogstaver
      – Ingen mellemrum
      – Ingen æ,ø,å
      – Ingen punktum (ud over det sidste, lige før fil typen (de tre sidste bogstaver)

      Mht Logo, kan jeg se at du også har fået det løst 😉

      Godt gået!

  3. Tillykke med sønnike 🙂 Jeg fandt koden jeg skulle bruge på en anden side og så lurede jeg af, hvor jeg skulle sætte den ind ved at sammenligne kildetekst på min egen og din side. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *