Du har drivit din WordPress-webbplats ett tag och den har gjort vad den behöver. Men nu bestämmer du att du måste anpassa den.

Eller kanske skapar du din webbplats med ett tema som du har hämtat från temakatalogen eller ett du har köpt, och du inser att det inte fungerar på exakt så som du vill att det ska.

Vad gör du då?

Du kan antingen hitta ett plugin som kommer att ge dig den anpassning du behöver eller byta till ett nytt tema. Men tänk om du är nöjd med ditt nuvarande tema och inte kan hitta ett plugin som lägger till vad du behöver när det gäller funktionalitet?

Svar: du måste anpassa ditt tema. Och bästa praxis säger: gör det via (WordPress)barnteman.

I det här inlägget ska jag visa dig exakt hur du skapar ett barntema i WordPress, hur du använder det för att anpassa din webbplats och hur barnteman fungerar. Jag ska också förklara begreppet föräldrateman och beskriva hur föräldratemat på din webbplats interagerar med ett barntema:

Innan vi dyker in på att skapa ett barntema, låt oss identifiera de 3 metoder som du kan använda för att anpassa din WordPress-webbplats.

Metoder för att anpassa WordPress

Att anpassa ett tema har vissa risker. Om du redigerar koden i ett tema från tredje part (som är ett du köpt från en marknadsplats till exempel), och sedan uppdaterar temat, kommer alla dina ändringar att gå förlorade. Vilket innebär att inte bara återgår din webbplats till det sätt den var innan, men allt ditt arbete är bortkastat.

Det finns tre sätt att anpassa din WordPress-webbplats:

Låt oss ta en titt på var och en av dessa.

Att redigera ditt tema

Om din webbplats kör ett anpassat WordPress-tema, vilket innebär att det har utvecklats speciellt för din webbplats, har du möjlighet att säkert redigera det eftersom det inte finns risk för att du förlorar dina anpassningar nästa gång temat uppdateras.

Om du eller din utvecklare gör ändringar i temat i framtiden, är det istället den anpassade versionen av temat du kommer att redigera, och inte den ursprungliga versionen innan dessa ändringar.

Det betyder inte att redigering av ditt tema inte kommer utan risker. Om du inte har erfarenhet av att koda teman, kan det fortfarande vara säkrare att skapa ett barntema (vi visar hur om en liten stund). Detta är något jag gör: Jag har ett grundtema som jag använder på alla mina webbplatser, med standardlayout, krokar och funktioner, och sedan anpassar jag det på varje webbplats med ett barntema.

Om du redigerar ditt tema direkt, se till att du tar en säkerhetskopia av det ursprungliga temat, redigera inte temat på live-webbplatsen (använd en utvecklings eller staging-webbplats istället) och använd versionskontroll för att hålla reda på dina ändringar.

Och om du använder ett tema från tredje part, bör du aldrig redigera det direkt. Använd istället ett plugin eller skapa ett barntema.

Lägga till ett Plugin

Det andra alternativet för att anpassa ett WordPress-tema är att installera eller koda ett plugin.

Om de anpassningar du vill göra är funktionella i stället för designrelaterade, är ett plugin ett lämpligare sätt att göra detta. Så om du vill lägga till extra kod, kan det vara bättre att skapa ett plugin istället.

Plugin behöver inte vara stora eller komplexa: om du behöver lägga till extra kod till functions.php-filen i ditt tema, skapa ett enkelt plugin för att lägga till några rader kod till din webbplats. Ett bra exempel är att registrera en anpassad inläggstyp.

Det kan vara frestande att lägga till kod till temats functions.php, men att lägga till en inläggstyp är en funktionell förändring på din webbplats, inte en designmässig. Om du skulle byta teman i framtiden, skulle du inte vilja förlora dessa inläggstyper och alla inlägg du har skapat med hjälp av dem. Det är därför du borde installera eller skapa ett plugin istället.

Ibland kommer du att kunna hitta ett befintligt plugin som gör vad du behöver, men ibland kan du behöva koda pluginet själv.

WordPress-arkivet
WordPress-arkivet

Om du är osäker på om du ska skapa ett plugin eller anpassa ditt tema (eller barntema), fråga dig själv detta: om jag ville ändra designen av min webbplats i framtiden och installerade ett nytt tema, skulle jag vilja att denna förändring ska vara kvar? Om svaret är ja, betyder det att förändringen är funktionell och inte estetisk, och bör då ingå i ett plugin.

Att skapa ett barntema

Det tredje alternativet för att anpassa ett WordPress-tema är att skapa ett barntema.

Här är några situationer där du skulle använda ett barntema:

  • Du vill göra ändringar i utformningen av webbplatsen, inte funktionaliteten.
  • Din webbplats kör ett tema från tredje part eller ett tema som du vill använda igen i sitt nuvarande tillstånd.
  • Du vill inte direkt redigera ditt befintliga tema om det orsakar problem (kanske är du inte en erfaren temautvecklare).
  • Din webbplats kör ett tema som är utformat för att vara ett föräldratema, till exempel ett ramtema. Det är teman med massor av anpassningsalternativ som krokar, utformade för att du ska göra tillägg med ditt eget barntema.

Barnteman är därför ett effektivt och säkert sätt att lägga till anpassningar till din webbplats. Så låt oss ta en snabb titt på dem i lite mer detalj.

Vad är ett WordPress-barntema?

Så, vad exakt är ett barntema i WordPress? Hur fungerar det?

Ett barntema är ett tema som fungerar tillsammans med ett annat tema, som kallas föräldratema, eller överordnat tema.

Det innehåller specifika instruktioner för att tala om för WordPress att detta är ett barntema och vilket föräldratemat är. WordPress använder sedan koden från föräldratemat i de flesta fall men kommer att skriva över detta med kod från barntemat (om det behövs). Om du stöter på en webbplats med ett barntema som du gillar, använd vårt temadetektorverktyg för att ta reda på vad föräldratemat heter.

Filerna i ett WordPress-barntema

Varje WordPress-barntema måste ha två filer som ett minimum: en stilmall och en functions-fil. Stilmallen kommer att innehålla utkommenterad text längst upp som talar om för WordPress att detta är ett barntema och vilket föräldratemat är. Functions-filen kommer att innehålla en funktion som köar stilmallen från föräldratemat.

Observera: Du kan stöta på guider som talar om för dig att anropa föräldratemats stilmall från barntemats stilmall. Detta är inte längre rätt sätt att göra det, och du bör köa i functions-filen istället. Jag ska visa dig hur man gör detta inom kort.

Ditt barntema behöver inte innehålla några andra filer. Till skillnad från föräldratemat behöver det inte en index.php-fil som reserv om det inte finns några mer specifika filer i temat. Detta beror på att om en mallfil inte finns barntemat, kommer WordPress att använda filen från föräldratemat.

Så, beroende på vad du vill att ditt barntema ska göra, kommer du antingen att lägga till extra kod i stilmallen, till functions-filen. eller så skapar du extra filer i barntemat för att åsidosätta föräldratemat. Dessa kan omfatta en eller flera:

  • Mallfiler för att åsidosätta samma fil från föräldratemat, till exempel page.php när du vill anpassa visningen av statiska sidor.
  • Malldelar som header.php eller footer.php när du vill anpassa dessa delar av webbdesignen.
  • Extra malldelar som du anropar från mallfiler i ditt barntema. Så om du ville anpassa sidhuvudet när statiska sidor visas, skulle du skapa en fil i ditt barntema som heter header-page.php, och en mallfil som heter page.php, som skulle åsidosätta page.php-filen från föräldratemat. Den här mallfilen skulle vara identisk med den i föräldratemat förutom anropet till sidhuvudfilen som skulle anropa header-page.php istället för header.php.
  • Extra ’include files’ för funktionalitet. Om du vill lägga till en hel del funktionell kod och organisera det, kan du skapa ’include files’ för varje uppsättning funktioner och sedan anropa dem i ditt barntemas functions.php-fil. Om du till exempel vill lägga till extra Customizer-alternativ kan du lägga till en include file som heter customizer.php i ditt barntema och sedan anropa den filen från functions-filen i ditt barntema.

Men om du lägger till extra filer och funktioner, hur vet WordPress vilken det ska använda? De från föräldratemat eller de från barntemat? Det är vad vi kommer till nu.

Hur WordPress Väljer Mallfiler

Det sätt som WordPress väljer mallfiler från ditt tema när du visar innehåll på din webbplats är genom att hänvisa till mallhierarkin.

WordPress mallhierarki
WordPress mallhierarki

WordPress använder denna hierarki för att gå igenom mallfilerna i ditt tema och hitta den rätta att använda när du visar en viss typ av innehåll. Det börjar överst (på vänster sida i bilden ovan) och letar efter varje fil för den givna innehållstypen. När den hittar en fil som kommer att visa det innehållet, kommer det att använda den.

Föreställ dig att ditt tema har en archive.php-fil och en category.php-fil men ingen tag.php-fil. När du visar ett kategoriarkiv, kommer WordPress att använda category.php eftersom det är mer specifikt för innehållstypen. När du visar ett taggarkiv använder den archive.php istället.

Om WordPress inte hittar en mallfil för den angivna innehållstypen, kommer den att gå till sin standard index.php-fil som gäller för allt, varför varje fristående tema (dvs inte ett barntema) måste ha en index.php-fil.

Detsamma gäller för enstaka inlägg och sidor. Låt oss säga att ditt tema har en singular.php-fil, som gäller för enskilda inlägg av vilken inläggstyp som helst (inklusive sidor och anpassade inläggstyper). Den har också en page.php-fil. När du visar en enda sida använder den page.php. När du visar ett inlägg, kommer den att använda singular.php. Och om du registrerar en anpassad inläggstyp och inte lägger till en mallfil för den inläggstypen kommer den att använda singular.php igen.

När du använder ett barntema använder WordPress fortfarande mallhierarkin för att bestämma vilken fil som ska användas vid visning av innehåll på din webbplats. Det tittar på filerna i både förälder och barnteman och använder den första filen som den hittar.

Så föreställ dig att ditt barntema har singular.php och post.php, och ditt föräldratema har page.php och index.php. När WordPress visar ett inlägg, kommer det att använda post.php från barntemat. När det visar en sida använder det page.php från föräldratemat. Och när det visar ett inlägg av en anpassad inläggstyp, kommer det att använda singular.php från barntemat.

Men vad händer om både ditt barn och föräldrateman har instanser av samma fil?

Tänk dig att du lägger till en page.php-fil till barntemat i föregående exempel. Eftersom den filen finns i barntemat, åsidosätter det samma fil från föräldratemat. Så när du visar en enda sida skulle WordPress använda den nya page.php-fil från barntemat.

Det är därför att skapa ett barntema låter dig anpassa ett föräldratema. Om du lägger till en kopia av en mallfil från ditt föräldratema till ditt barntema och sedan redigerar den för att inkludera de anpassningar du vill göra, kommer WordPress att använda den här nya mallfilen istället för den från föräldratemat. Vilket innebär att dina anpassningar kommer att användas när du visar innehåll, utan att du måste redigera föräldratemat. Snyggt!

Hur WordPress kör funktioner från förälder- och barnteman

Vad händer om du inte vill göra anpassningar till mallfilerna i ditt tema, utan till funktionerna?

Du kan göra det också. Först måste du vara säker på att det rätta sättet att göra detta är via ett barntema och inte ett plugin. Ett exempel kan vara att du vill redigera en funktion som redan finns i föräldratemat, till exempel funktionen som visar kolofonen i sidfoten.

Du lägger då till den nya funktionen i functions-filen i ditt barntema eller till en include file som du anropar från functions-filen.

För att säkerställa att din nya funktion åsidosätter funktionaliteten från ditt föräldratema måste du förstå hur du åsidosätter, eller hoppar över, funktioner. Det finns tre sätt att göra detta:

  • Genom att skriva en ny funktion med samma namn som en pluggbar funktion i ditt föräldratema.
  • Genom att ta bort funktionen i ditt föräldratema från kroken den var ansluten till och sedan skriva en ny funktion för att ersätta den.
  • Genom att skriva en ny funktion med högre prioritet än den ursprungliga funktionen och anropa den via samma krok, vilket innebär att den döps efter den ursprungliga funktionen och kan därför åsidosätta eller ändra den.

Vi kommer att undersöka hur du gör alla dessa senare i det här inlägget. Men först, låt oss ta en titt på de situationer där du skulle eller inte skulle använda ett barntema.

När ska man använda ett barntema i WordPress (fördelar)

Du vet nu vad barnteman är och hur du kan använda dem för att åsidosätta mallfilerna eller funktionerna i ditt föräldratema.

Som en kort sammanfattning bör du använda ett barntema om du kör ett tema på din webbplats och du vill göra ett eller flera av följande:

  • Redigera en eller flera av mallfilerna.
  • Lägg till extra funktioner som är relaterade till visning och inte funktionalitet.
  • Åsidosätta en eller flera funktioner från föräldratemat.
  • Lägg till extra mallfil(er).

Vissa fördelar är:

  • Enkel utökning och anpassning:Som det är uppenbart utökar ett barntema funktionaliteten av sitt föräldratema. Du har redan en färdig mall till tjänst i form av ett föräldratema, och allt du behöver göra är att skapa en separat style.css-fil för ditt barntema, och lägga till finjusteringarna efter behov.
  • Problemfria uppdateringar:Allteftersom WordPress utvecklas, måste teman och plugins uppdateras då och då. Om du gör finjusteringar och ändringar i ditt primära tema, kan du förlora alla dina ändringar när du en dag uppdaterar temat. Således är det lämpligt att göra sådana ändringar i ett barntema, så att även om du någonsin måste uppdatera föräldratemat, behöver du inte vara rädd för att förlora dina ändringar.

Och när du inte borde använda ett barntema?

När ska man inte använda ett barntema (nackdelar)

Det finns tillfällen du inte borde använda ett barntema och bör använda en annan metod för att anpassa din webbplats. Dessa är:

  • Om ditt tema är ett du utvecklat själv (eller någon annan kodade åt dig) och inte behöver använda det någon annanstans. Bara redigera temat, se till att du använder versionskontroll.
  • Om de anpassningar du vill göra är funktionella, t.ex. lägga till en anpassad inläggstyp, och du vill behålla dem om du ändrar teman i framtiden. Använd ett plugin istället.

Vissa nackdelar inkluderar:

  • Välja det perfekta föräldratemat: Inte alla teman är bra föräldrar! Vissa WordPress-teman, till exempel, kanske inte uppdateras regelbundet och tenderar därmed att sakna den senaste funktionaliteten. På samma sätt skapas inte alla WordPress-teman med barnteman i åtanke och kan därför fungera dåligt som kandidater för föräldrateman. Du måste välja det perfekta föräldratemat för att kunna utöka det ordentligt och få det att fungera som en grund för dina barnteman.
  • Anpassningsansträngningar: Ett barntema syftar i grunden till att utöka och anpassa en befintlig malldesign. Om du redan har skapat en webbplats runt ditt föräldratema kan du behöva fundera kring anpassning av element som menyer, temaalternativ, sidofält, rubrik etc. när du flyttar till ett barntema.

Nu när du vet när du (och när du inte) ska använda ett barntema, är det dags att komma igång och lära sig att skapa ett barntema i WordPress.

Så skapar du ett WordPress-barntema

Att konfigurera ett grundläggande barntema i WordPress innebär att skapa två filer: stilmallen och functions-filen. Låt oss ta en titt på dem båda.

Stilmallen

Innan du skapar din fil måste du skapa en mapp för att förvara ditt tema i. Denna ska ligga i wp-content/themes-filen i din WordPress-installation.

Kom ihåg: gör inte detta på din live-webbplats. Lägg koden till en utvecklings-webbplats först och testa den sedan på din staging-webbplats. När du är nöjd kan du överföra den till din live-webbplats. Alla Kinstas hostingplaner inkluderar staging.

I mappen för ditt nya tema skapar du en fil som heter style.css. Lägg till följande till det:

/*
Theme Name:  My Child Theme. Child for Twenty Nineteen.
Theme URI:  https://rachelmccollin.com
Description:  Theme to support tutsplus tutorial. Child theme for the Twenty Nineteen theme.
Author:  Rachel McCollin
Textdomain:  mccollin
Author URI:  https://rachelmccollin.com/
Template:  twentynineteen
Version:  1.0
License:  GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html                 
*/

Denna text är utkommenterad. Det är inte kod som driver något på din webbplats eller ger någon funktionalitet. Istället berättar den för WordPress om temat. Du behöver text som denna i varje tema, annars kan WordPress inte känna igen det som ett tema.

Låt oss gå igenom var och en av dessa rader för att identifiera vad de gör:

  • Theme Name: Det unika namnet för temat.
  • Theme URI: Var användare kan hitta koden eller dokumentationen för temat.
  • Description: Beskrivande text för att hjälpa användare att förstå vad temat gör.
  • Author: ditt namn
  • Textdomain: detta används för internationalisering. Använd textdomänen som den andra parametern i alla internationaliseringsfunktioner.
  • Author URI: Författarens hemsida.
  • Template: Mappen där föräldratemat förvaras. Använd mappnamnet och inte temanamnet. Utan den här raden fungerar ditt tema inte som ett barntema.
  • Version: Versionsnummer
  • License: Licensen, som måste vara GNU. [länk]
  • License URI: Länken till information om licensen.

Den viktigaste raden för ett barntema är Template:-raden. Utan detta kommer temat inte att fungera som ett barntema. Endast barnteman kommer att innehålla denna rad.

Lägg till detta i temats stilmall, redigera den för att lägga till dina egna detaljer istället för mina. Du måste redigera Template:-raden för att lägga till mappen ditt befintliga tema lagras i, eftersom det kommer att vara ditt föräldratema.

Spara nu filen. Om du skulle titta på fliken med temadetaljer på din webbplats nu, skulle du se detta:

Temasidan i WordPress utan skärmdump
Temasidan i WordPress utan skärmdump

Det här ser inte bra ut för det finns ingen skärmdump. Detta är en bild som ger en uppfattning om hur temat ser ut. Om inte ditt tema kommer att se väldigt annorlunda ut än föräldratemat, kopiera bara screenshot.png-filen från ditt föräldratema till ditt barntema.

Temasidan i WordPress med skärmdump
Temasidan i WordPress med skärmdump

Functions-Filen

Nästa steg är att lägga till en functions-fil till ditt barntema. Du behöver detta så att du kan köa stilmallen från föräldratemat. Utan det skulle din webbplats inte ha någon formatering alls, och skulle se ut så här:

Vår hemsida utan CSS
Vår hemsida utan CSS

Inte bra, jag är säker på att du håller med! Så låt oss lägga till formatering så att den ser ut som den ska.

Lägg till en fil som heter functions.php i barntemamappen. Öppna den och lägg till den här koden:

<?php
/* enqueue script for parent theme stylesheeet */        
function childtheme_parent_styles() {
 
 // enqueue style
 wp_enqueue_style( 'parent', get_template_directory_uri().'/style.css' );                       
}
add_action( 'wp_enqueue_scripts', 'childtheme_parent_styles');

Detta använder funktionen wp_enqueue_style() för att köa stilmallen från föräldratemat, med funktionen get_template_directory_uri() som lokaliserar var den filen lagras. Funktionen är inne i en funktion som jag har skapat som heter kinsta_parent_styles(), som är ansluten till wp_enqueue_scripts-kroken..

Du kanske undrar varför den använder en funktion som heter wp_enqueue_scripts och inte wp_enqueue_styles. Detta beror på att wp_enqueue_scripts används för både skript och stilar och det finns ingen krok som heter wp_enqueue_styles.

Redigera min kod hur du vill för att lägga till ditt eget prefix till namnet på din funktion. Jag har använt ”childtheme” som mitt prefix för att säkerställa att min funktion inte krockar med andra funktioner från föräldratemat eller från några plugins.

Spara nu din fil.

Så här aktiverar du ditt WordPress-barntema

När ditt barntema är klart måste du aktivera det. Om du är orolig för att aktivering av ett barntema kommer att stänga av föräldratemat, ingen fara: WordPress kommer att förstå att det ska använda filerna från föräldratemat om du inte lägger till nya filer till barntemat som åsidosätter dem. Hittills har du inte lagt till några extra filer eller funktioner till barntemat, så din webbplats kommer att fungera på exakt samma sätt som det skulle med föräldratemat aktiverat.

Kom ihåg: Gör detta på din utvecklings eller staging-webbplats först. Aktivera inte ditt barntema på din live-webbplats förrän du har testat det.

I WordPress-adminpanelen, gå till Utseende > Teman. Du hittar ditt barntema listat bland de teman som är installerade på din webbplats.

Håll muspekaren över temat och klicka på knappen Aktivera. Detta kommer att aktivera ditt barntema. Nu när du besöker din livewebbplats, kommer det att se ut på samma sätt som det gjorde innan:

Startsidan
Startsidan

Det ser likadant ut eftersom du inte har lagt till några anpassningar än. Men du har nu ett fungerande barntema. Bra gjort!

Så här anpassar du ditt barntema i WordPress

Nu när du har ett fungerande barntema för din WordPress-webbplats är det dags att lägga till dina anpassningar. Här visar jag dig hur du lägger till mallfiler för att åsidosätta ditt föräldratemas, hur du lägger till formatering till ditt barntema och hur du lägger till nya funktioner.

Låt oss börja med mallfiler.

Så här lägger du till mallfiler till ditt WordPress-barntema

Vi har redan tittat på hur WordPress väljer vilken mallfil som ska användas när den visar innehåll på din webbplats. Det finns två saker att komma ihåg:

  • WordPress kommer att använda filen som kommer först i hierarkin, antingen från barnet eller föräldratemat.
  • Om en mallfil (eller en malldel som header.php) med samma namn finns i både förälder och barntemat, kommer WordPress att använda en från barntemat.

För att lägga till anpassningar tycker jag att det är lättare att börja med att göra en kopia av den relevanta filen från föräldratemat, lägga till det i barntemat och sedan redigera den.

Detta gäller om filen i ditt barntema kommer att ha samma namn som en fil i föräldratemat, eller om det kommer att bli en ny fil för att visa en annan innehållstyp, eller en som är högre i hierarkin.

Så om jag lägger till en ny version av page.php till mitt barntema, som kommer att åsidosätta page.php i mitt föräldratema, kommer jag att kopiera page.php från mitt föräldratema till mitt barntema och sedan redigera den. Se till att du kopierar filen: flytta den inte, eftersom du inte vill göra några ändringar i föräldratemat.

Och om jag vill ha en anpassad sidmall i mitt barntema, till exempel, kommer jag att kopiera page.php till mitt barntema, byta namn på den, och sedan redigera den.

På så sätt kan du se till att alla aspekter av filen som du inte behöver anpassa fortfarande fungerar korrekt. Detsamma gäller för malldelar.

Så här lägger du till formatering till ditt WordPress-barntema

Du kan också lägga till formatering till ditt barntemas style.css-fil, som kommer att utöka eller åsidosätta formatering i ditt föräldratemas stilmall.

WordPress kommer att anropa stilmallen från föräldratemat först och sedan stilmallen från barntemat. Det betyder att om du lägger till formatering till barntemat som riktar sig till samma element som formatering i föräldratemat, kommer det att åsidosätta formateringen från föräldratemat så länge du använder samma omkopplare.

Så tänk dig att du vill ändra färgen på webbplatsens titel. I föräldratemat kan det här formateras ungefär så här:

h1.site-title {
 color: #000;
}

För att åsidosätta detta i ditt barntema, skulle du lägga till detta:

h1.site-title {
 color: #303030;
}

Eftersom webbläsaren kommer att stöta på detta efter formateringen i föräldratemat, kommer det att åsidosätta det och använda det här istället.

Så här lägger du till funktioner till ditt WordPress-barntema

Så, du har skapat ett barntema i WordPress, inte för att du vill redigera någon av mallfilerna, utan för att du vill lägga till extra funktionalitet eller åsidosätta en eller flera av funktionerna i föräldratemat.

Att skriva funktioner i ditt barntema är lite mer komplicerat än att lägga till mallfiler, men det är möjligt.

Om du vill lägga till en ny funktion som inte interagerar med någon av funktionerna i ditt föräldratema, kan du bara gå vidare och göra det. Lägg bara till funktionen i functions.php-filen i ditt barntema, anslut den till relevant åtgärds eller filterkrok, och det är färdigt.

Men om du planerar att åsidosätta eller redigera en funktion i föräldratemat måste du förstå de metoder du kan använda för att göra detta. Det finns tre sätt du kan åsidosätta en föräldratema-funktion i ditt barntema:

  • Om funktionen i föräldratemat är pluggbar skriver du helt enkelt en annan funktion i ditt barntema med samma namn och WordPress kommer att köra den funktionen istället för den i föräldratemat.
  • Om du vill hindra funktionen i föräldratemat från att köras helt och hållet kan du skriva en funktion i ditt barntema som kopplar bort den från kroken som den är ansluten till.
  • Om du vill utöka en funktion kan du lägga till en annan funktion (med ett annat namn) i ditt barntema och se till att den körs efter den som finns i föräldratemat.

Låt oss ta en närmare titt på hur du gör var och en av dessa saker.

Åsidosätta en pluggbar funktion

En pluggbar funktion identifieras genom den villkorliga kontrollen som är lindad runt den. Detta kontrollerar om det finns en annan funktion med samma namn som redan har aktiverats. I så fall kör den inte den funktionen.

WordPress kommer att aktivera funktioner från ditt barntema innan de från föräldratemat. Om det upptäcker över en pluggbar funktion i föräldratemat och du har lagt till en funktion i ditt barntema med samma namn, kommer den pluggbara funktionen inte att köras.

Ett exempel är den funktion som visar kolofonen temat Storefront för WooCommerce-webbplatser. Här är funktionen utan dess innehåll:

if ( ! function_exists( 'storefront_credit' ) ) {
 function storefront_credit() {
  // contents for function here
 }
}

Om du ville åsidosätta den, skulle du skriva en annan funktion med samma namn (storefront_credit()) och anslut den till samma krok som i föräldratemat.

Ta bort en funktion från föräldratemat

Om funktionen från föräldratemat inte är pluggbar kan du fortfarande förhindra att den körs. Tänk dig att ditt föräldratemahar en funktion som heter parent_function(), som är ansluten till init-kroken med en prioritet på 20. Du vill förhindra att den körs så att du kan ersätta den med en egen funktion.

Här är hur föräldratemafunktionen kan se ut:

function parent_function() {
 //contents of function here
}
add_action( ‘init’, ‘parent_function’, 20 );

För att ta bort den skulle du koda detta i ditt barntema:

function remove_parent_function() {
 remove_action( ‘init’, ‘parent_function’, 20 );
}
add_action( ‘wp_head’, ‘remove_parent_function’ );

Observera att du ansluter din andra funktion till wp_head-korken som körs högst upp på varje sida och att du måste inkludera samma värde för prioritetsparametern som i den ursprungliga funktionen. Om den ursprungliga add_action()-funktionen inte hade någon prioritet kan du utelämna den från funktionen remove_action() för ditt barntema.

Observera: Om den ursprungliga funktionen var ansluten till en filterkrok istället för en åtgärdskrok, skulle du använda remove_filter() på samma sätt.

Utöka en funktion med en annan funktion

Istället för att åsidosätta eller ta bort en funktion, kanske du ibland vill göra ett tillägg till den istället. I det här fallet skulle du skriva en ny funktion med ett annat namn och ansluta den på samma krok.

Tänk dig att det finns en åtgärdskrok för sidfoten i ditt föräldratema som heter parent_footer. Alla funktioner som du fäster på den kroken kommer att köras på den plats där kroken är belägen.

I föräldratemat finns det redan en funktion som heter parent_footer_content() som finns i sidfoten. Men vad händer om du vill lägga till lite extra kod till den?

Så här kan funktionen parent_footer_content() se ut i föräldratemat:

function parent_footer_content() {
 // content of function here
}
add_action( ‘parent_footer’, ‘parent_footer_content’ );

Om du nu ville lägga till ytterligare innehåll efter det, skulle du skapa en funktion i ditt barntema, ansluta den till samma åtgärdskrok, med en prioritet som innebar att den körs efter den första funktionen. Eftersom prioriteten inte är inställd för föräldratemats funktion är den som standard 10. Så du måste använda en högre prioritet så att den aktiveras efter det.

function child_footer_extra_content() {
 // contents of function here
}
add_action( ‘parent_footer’, ‘child_footer_extra_content’, 20 );

Detta skulle lägga till koden från ditt barntemas funktion efter koden från ditt föräldratemas funktion.

Så här felsöker du barn- och föräldrateman

Så nu vet du hur man skapar ett barntema i WordPress och hur man använder det för att åsidosätta mallfiler, lägga till extra formatering, och lägga till funktionalitet på din webbplats.

Men vad händer om ditt barntema inte fungerar som du förväntat? Vad händer om innehållet inte visas som du förväntade dig, eller om en funktion inte aktiveras?

Använd den här checklistan för att felsöka ditt barntema:

  1. Kontrollera att du har aktiverat ditt barntema och att ditt föräldratema inte fortfarande är igång. Det är förvånansvärt lätt att glömma det här steget!
  2. Uppdatera webbläsarens cache och cacheminnet som skapats av eventuella plugins på din webbplats.
  3. Ställ in wp-debug till true i ditt barntemas wp-config.php-fil. Om du får en vit skärm, bör det finnas ett meddelande som berättar vilken kod som har orsakat problemet och vilken fil den finns i. Detta hjälper dig att identifiera felet och vilken fil som används.
  4. Kontrollera utmatningskoden för din sida, inlägg eller ditt arkiv. Hitta bodyelementet och se vilka klasser det har. Dessa kommer att tala om för dig vilken typ av innehåll du tittar på, vilket hjälper dig att identifiera vilken mallfil som används. Ibland är det inte vad du förväntar dig. Till exempel använder huvudbloggsidan aldrig archive.php, även om den visar ett arkiv över dina inlägg.
  5. Kontrollera att du har namngett dina filer korrekt. Se mallhierarkin för att vara säker på att du har använt rätt syntax.
  6. Om du duplicerade en fil från föräldratemat och lade till det i ditt barntema, kontrollera att du har sparat ändringarna.
  7. Om en funktion för att åsidosätta en pluggbar funktion inte fungerar, kontrollera att du har gett den exakt samma namn som den pluggbara funktionen och att funktionen i föräldratemat verkligen är pluggbar.
  8. Om en funktion som du tog bort fortfarande aktiveras, kontrollera att du lagt till rätt prioritet och att stavningen är identisk med stavningen på funktionen och kroken i föräldratemat.
  9. Om du använde prioritet för att åsidosätta eller utöka en funktion, försök att öka prioritetsvärdet, så att du kan vara helt säker på att den aktiveras sist. Kontrollera att det inte finns några andra funktioner kopplade till den kroken som stör din kod.

Förhoppningsvis kommer ett eller flera av dessa steg att hjälpa dig att identifiera problemet och åtgärda det i ditt barntema. Kom ihåg: redigera inte föräldratemat direkt.

Användbara tips när du arbetar med WordPress-barnteman

Pusta ut. Barnteman är ett stort ämne och en otroligt värdefull funktion i WordPress. Jag använder dem på varje plats jag bygger.

För att hjälpa dig att hitta de metoder du behöver använda för att få ut det mesta av barnteman, kommer här mina tips som hjälper dig med dem:

  • Om du behöver redigera ett tema från tredje part, använd alltid ett barntema istället. På så sätt går dina ändringar inte förlorade när du uppdaterar temat.
  • Varje barntema behöver en stilmall och en functions-fil.
  • WordPress kommer att använda mallhierarkin för att bestämma vilken mallfil som ska användas vid visning av innehåll. Om den hittar två filer med samma namn, kommer det att använda den från barntemat.
  • Du kan åsidosätta en pluggbar funktion i ditt föräldratemagenom att skriva en funktion med samma namn i ditt barntema.
  • Du kan ta bort en funktion från föräldratemat med en funktion med remove_action() eller remove_filter() i ditt barntema och sedan skriva en ny funktion.
  • Du kan utöka en funktion i ditt föräldratema genom att skriva en funktion i ditt barntema och koppla den till samma åtgärds eller filterkrok.
  • Glöm inte att aktivera ditt barntema när du har laddat upp det. Och se till att ingen raderar föräldratemat från din WordPress-installation: utan det kommer barntemat inte att fungera.

Sammanfattning

Barnteman är en användbar funktion i WordPress som låter dig anpassa ett tema utan att direkt redigera dess kod. Du kan använda en för att lägga till ytterligare funktioner till ett tema, för att anpassa formatering, eller för att skapa/redigera mallfiler.

Om du följer råden ovan, kommer du att kunna skapa barnteman i WordPress efter bästa praxis och ha användning av dem för en mängd olika uppgifter. Helt utan att förlora dina ändringar och anpassningar när du uppdaterar föräldratemat.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.