Nybörjarens guide till WordPress-taxonomier Teman eller Plugins?

I den här serien tar vi en titt på vilka WordPress-taxonomier som är, deras definition, när de ska användas och hur man införlivar dem i våra teman. För att se till att vi täcker detta så mycket som möjligt, närmar vi oss detta från en nybörjarperspektiv.

Som nämnts i det första inlägget i serien är inte denna serie riktad mot nybörjare. Kanske är du en mellanliggande WordPress-utvecklare som ser ut att börja förgrena sig till nya API och implementera nya funktioner i ditt arbete och taxonomierna passar räkningen för exakt det.

Oavsett fall gör vi vad vi kan för att se till att du är beväpnad med så mycket information som möjligt när det gäller att integrera anpassade taxonomier i dina WordPress-projekt.

Varför vs När

Innan vi tittar på ett faktiskt genomförande av hur man införlivar taxonomier, måste vi prata om några av de utmaningar som följer med att ta fram taxonomier i vårt arbete.

Specifikt bör taxonomier inkluderas som en del av ett tema eller i ett plugin? Denna fråga är verkligen mer en fråga om "varför ska vi inkludera taxonomier på detta sätt?" och "när ska vi inkludera taxonomier på detta sätt?"

Och för att svara på det är det viktigt att skilja mellan de två alternativen vi har och hur data lagras.

Hur data lagras

Låt oss först diskutera hur taxonomier lagras internt inom WordPress. Taxonomier består av två komponenter: En taxonomi och en term.

  1. En taxonomi representerar hur informationen grupperas tillsammans.
  2. En term representerar typen av data som hör till den taxonomin.

Till exempel, när man tänker på Postformat, är taxonomin Postformat och villkoren är Standard, Video, Bild, Länk, och så vidare. På samma sätt kan en annan taxonomi vara Fotografi och villkoren kan vara Filma och Digital.

I det mest grundläggande fallet är standard WordPress-taxonomi och termparning Kategori och Okategoriserad som är försedd med varje installation.

Nu är det viktigt att förstå hur dessa data hanteras i WordPress-databasen. Det finns tre databastabeller som var och en spelar en roll i förhållandet mellan taxonomier och deras associerade termer.

Om du antar att du arbetar med standardinstallationen (det vill säga är tabellförsteget wp_), då har du följande tabeller med motsvarande uppgifter:

  1. wp_terms representerar de termer som hör till olika taxonomier. Det betyder att om du har en Fotografi taxonomi med två termer är Filma och Digital och du har en taxonomi som heter Typ med Färg och Svartvitt då är det villkor Filma, Digital, och Färg kommer alla att ligga inom wp_terms tabell.
  2. wp_term_taxonomy är en databas tabell som ansvarar för att lagra beskrivningen av villkoren som lagras i wp_terms tabell. Säg, till exempel, har du en Färg termen och termen beskrivs som "Fotografier som utvecklas i livfulla färger." Då skulle denna beskrivning ligga i wp_term_taxonomy tabell.
  3. De wp_term_relationships är förmodligen den som har den största inlärningskurvan för nya utvecklare. Tabellen upprätthåller sambandet mellan vilka taxonomier som är relaterade till vilka posttyper. Till exempel, med tanke på en standardinstallation, lagras i denna tabell relationen mellan kategorintermen och varje post som den är associerad med.

Nu när vi har en förståelse för hur data lagras kan vi diskutera när taxonomierna är meningsfulla inom ramen för teman och inom ramen för plugins.

Teman eller plugins?

Generellt sett är en bra tumregel att notera att WordPress-teman bör vara för presentation av data och plugins ska vara för funktionalitet. Det vill säga teman ger formatet för hur data ser ut, och plugins utökar kärnfunktionaliteten i WordPress.

Det finns också begreppet utvidgningar som är temaspecifika plugins och plugin-specifika plugins, men det ligger utanför ramen för denna artikel. För nu, låt oss hålla diskussionen på nivå med teman och plugins.

Låt oss säga att du arbetar med ett tema och du vill introducera en anpassad taxonomi i temat. I linje med våra exempel som används i serien, låt oss säga att du vill skapa ett portföljtema och du vill introducera en Fotografi taxonomi. Tillsammans kommer temat att tillåta användare att visa upp sitt arbete.

Låt oss då säga att du vill arbeta på samma tema om ett år eller så men du vill göra en stor uppgradering. Kanske vill du generalisera taxonomierna så att människor inte behöver använda den bara för fotografering. Istället kan de använda den för korta dikter eller skrifter, ritningar och så vidare. 

Problemet är att du nu har Fotografi taxonomi hardcoded i temat så att alla som använder den och installerar den får den särskilda taxonomin oavsett om de vill visa upp fotografering eller inte.

Visst är det helt möjligt att återuppbygga temat från grunden och abstrahera taxonomifunktionen till något mer generellt, men vad händer för användare som vill uppgradera? Förlorar de data som de har spenderat månader eller år med att arbeta med? Hur kommer deras data att organiseras? Är de fasta med den aktuella versionen av det tema som de arbetar med?

Självklart är det mycket att tänka på när du arbetar med ett sådant tema. Men det är där vikten av att segmentera presentationen och funktionaliteten kommer in i spel.

Det är helt möjligt att bygga ett tema som är utformat för att visa upp arbete i en portföljstil utan att behöva hardkoda någon typ av taxonomi i temat. I stället bygger funktionaliteten i ett plugin och installerar sedan pluginet tillsammans med det tema som du bygger på. Därefter får du fördelarna med portföljpresentationen utan att användarna är låsta in med ditt tema för länge och eventuellt förlorar deras data när de uppgraderas till ett nytt tema.

Ett ord om kompatibilitet

För många av ovanstående skäl är det lätt att se varför implementering av anpassade taxonomier inom ramen för plugins är meningsfull.

Detta ska inte säga att det aldrig borde ske i teman. När allt är där är nischteman som riktar sig till en mycket specifik publik och som försöker tillhandahålla en allt-i-ett-lösning för sina kunder. Det är bra, men om du vill introducera denna typ av funktionalitet med största möjliga överklagande, så bygger funktionaliteten i ett plugin mycket meningsfullt.

Inte bara får du nytta av att ge användarna möjlighet att porta sina data från tema till tema utan att förlora kategoriseringen av deras data, men du ger dem också fördelen att kunna behålla oberoende mellan presentationen av deras data och lagringen av deras data.

Och om du är en temautvecklare, kan du fortfarande arbeta för att skapa teman som är utformade specifikt kring plugin. Kanske vill du erbjuda ett tema för fotografer, en för författare och en för artister. Med den här strategin kan du ändå sträva efter att fånga en viss typ av marknad samtidigt som din plugin är kompatibel med varianterna av ditt arbete, vilket gör att du kan arbeta på olika teman och ge dina kunder möjlighet att flytta mellan teman allt medan du fortfarande använder dina produkter.

Strax

Eftersom vi har granskat hur WordPress hanterar taxonomier i databasen och vi har tittat på några anledningar till varför teman och plugins ska fungera i samverkan med varandra för att erbjuda specifika funktioner, kommer vi att titta på hur vi kan skapa vårt eget plugin som implementerar anpassad taxonomi funktionalitet som vi har använt som exempel data i hela serien.

Under tiden kan du lämna några kommentarer, frågor eller allmän feedback i kommentarfältet nedan.