Presentation av WordPress 3 Custom Taxonomies

WordPress 3 fyller i ett antal viktiga luckor mot att vara ett seriöst content management system. Den lättanvända anpassade taxonomiefunktionen ger webbplatsdesigners några kraftfulla verktyg för att bygga en bra informationsarkitektur. Lär dig vad taxonomier är, varför de är användbara, och hur man använder dem i dagens handledning!


Vad är en taxonomi?

Taxonomier är olika metoder för att klassificera saker.

Taxonomier är olika metoder för att klassificera saker. Denna handledning använder ett exempel på inlägg om olika stationära datorer, som kan klassificeras enligt ett antal tydliga kriterier, inklusive:

  • Mängden RAM
  • Storlek på hårddisken
  • CPU-hastighet
  • Typ av CPU
  • Operativsystem installerat
  • och så vidare…

En kort historia av WordPress Taxonomies

kategorier

Innan version 2.3 hade WordPress bara en generisk taxonomi, kallad kategori, för inlägg. Det fungerade bra för bloggar, eftersom du kunde skapa en högsta kategori som heter "Stationära datorer" med en underkategori som kallas "RAM", som kan ha underkategorier som "Mindre än 1 GB", "1 GB", "2 GB till 4 GB, "och så vidare. En andra barnkategori av "Stationära datorer" kan kallas "Operativsystem" med underkategorier som "Windows XP", "Mac OS", "Red Hat", "Ubuntu" och så vidare.

När ett system tillåter dig att ha kategorier som kan delas in i underkategorier, kallar vi det en hierarkisk struktur. Det bästa du kan göra för en seriös webbplatsarkitektur före WordPress version 2.3 var att skapa en stor hierarki av kategorier där kategorierna på toppnivå representerade stora taxonomier.

Tags

Version 2.3 av WordPress lagt till en annan typ av taxonomi som heter Tags. Medan kategorier oftast tas upp i förväg, specifika för innehållstyperna på en webbplats, ger taggar en mer friformad, improviserad metod för att klassificera innehåll.

När du till exempel skriver ett inlägg om en viss stationär dator tillåter taggar författaren att skriva ett eller flera sökord som "spel", "tivo", "bullriga fläkt" och så vidare. Dessa nyckelord kan inte vara meningsfulla som hela kategorier, men hjälper till att ge ytterligare ytterligare klassificering till ett inlägg. Besökare kan då enkelt hitta alla inlägg taggade med "bullriga fläktar" senare. De fria egenskaperna hos taggar hjälper oss emellertid inte till att bygga ett solidt klassificeringssystem runt kända värden som operativsystemtyper eller CPU-typer. Taggar är också endimensionella, vilket inte tillåter någon hierarkisk struktur.

Enkelnivå anpassade taxonomier

Wordpress version 2.8 gjorde det möjligt att lägga till anpassade klassificeringssystem med bara några ändringar i koden på din webbplats. Det här låter dig bygga en lista över möjliga operativsystem, skilda från en lista med möjliga RAM-typer, och så vidare. Det gjorde dock inte tillåtet att använda dessa anpassade taxonomier i en hierarki som liknar de generella kategorierna taxonomi.

Helt hierarkiska anpassade taxonomier

Slutligen ger WordPress version 3 oss helt hierarkiska anpassade taxonomier. Lägg märke till hur den hierarkiska naturen gör att vi kan förenkla operativsystemets taxonomi, till exempel genom att trycka på alla olika Windows-varianter enligt en "Windows" -förälderklassificering. Detta gör det möjligt för besökare att se alla inlägg som klassificeras med något Windows-operativsystem, eller låta dem vara mer specifika och se bara inlägg som klassificeras med Windows XP, till exempel.


Skapa en anpassad taxonomi

Redigering av ditt temas funktioner.php-fil

WordPress version 3 tillåter dig inte att skapa anpassade taxonomier från administrationsskärmen. För att initialt definiera dina anpassade taxonomier utan ett plugin måste du lägga till lite kod till ditt temas funktioner.php-fil. Detta är inte för svårt - följ bara min ledning.

För att lägga till egna taxonomier måste vi redigera filen "functions.php" som finns i din temakatalog. Till exempel använder jag standard "tjugo" temat som levereras med WordPress 3.0, och min WordPress-installation finns i en katalog med namnet "wp." Min functions.php-fil finns då på:
[Website_root] /wp/wp-content/themes/twentyten/functions.php.


Lägga till taxonomierna i koden

Vi håller oss med skrivbordsdatorexemplet och lägger till separata taxonomier för RAM, hårddisk och operativsystem. Vid denna tidpunkt lägger vi helt enkelt taxonomierna, som tomma behållare. Lyckligtvis kan vi lägga till och hantera olika klassificeringar, till exempel "Windows XP", från bekvämligheten på admin-instrumentpanelen.


Steg 1 En funktion för att skapa dem alla

Först måste vi bygga en funktion som skapar alla taxonomier vi behöver. Vi ringer funktionen "build_taxonomies". Låt oss lägga till den här funktionen längst ner i functions.php-filen.

 funktion build_taxonomies () // koden går här

Steg 2 Definiera taxonomierna

Därefter måste vi, för varje taxonomi som vi vill skapa, ringa en viss WordPress-funktion med rätt parametrar. Här är funktionen, och dess viktiga parametrar förklaras.

 register_taxonomy ('internal_name', 'object_type', array ('hierarchical' => sant | false, 'label' => 'Mänskligt läsbart namn', 'query_var' => true | false, 'rewrite' => true | false));
  • internal_name: Vad kommer denna taxonomi att kallas från inuti WordPress, i databasen och mallfilerna?
  • objekttyp: Vilka typer av innehåll kan klassificeras med denna taxonomi? Möjliga värden är "post, sida, länk" och sedan namnen på anpassade posttyper vi lär oss att skapa i en framtida handledning.
  • Därefter kommer en rad valfria parametrar. Vi använder de viktigaste här i den här handledningen, men en fullständig lista finns på sidan Referensfunktion / register_taxonomy Codex. De parametrar vi ska använda är:
  • hierarkisk: Om "sant" har denna taxonomi hierarkiska förmågor som WordPress-kategorier. Om "falskt" fungerar denna taxonomi mycket som freeform Tags.
  • märka: Detta är det personligt läsbara namnet som används i webbplatsens gränssnitt för att märka taxonomin.
  • query_var: Om "sant" kan vi fråga WordPress för inlägg som är beroende av valen för denna taxonomi. Till exempel kunde vi söka efter alla inlägg där operativsystemets taxonomi har "Windows" valt.
  • skriva om: Om "sant" kommer WordPress att använda vänlig webbadress när man tittar på en sida för denna taxonomi. Till exempel kan en sida som visar alla inlägg med det valda operativsystemet "Windows" representeras av följande url: http://domän.com/operating_system/windows

Vår post som är specifik för att lägga till operativsystemets taxonomi ser ut så här:

 register_taxonomy ('operating_system', 'post', array ('hierarkisk' => true, 'label' => 'Operativsystem', 'query_var' => true, 'rewrite' => true));

Fortsätt och lägg till det till din "build_taxonomies" -funktion.

Mer information:

"register_taxonomy" definieras vidare inom WordPress codex.


Steg 3 Kallar taxonomi-skapande funktion

Vi måste lägga till ytterligare en rad i filen "functions.php" så att vår "build_taxonomies" -funktion faktiskt kommer att utföras. Vi "hook" funktionen "build_taxonomies" till "init" -händelsen genom att lägga till följande kod:

 add_action ('init', 'build_taxonomies', 0);

Du kan lägga till den här raden någonstans, men jag lägger det allmänt över funktionen vi ringer, så det skulle se ut så här:

 // Custom Taxonomy Code add_action ('init', 'build_taxonomies', 0); funktion build_taxonomies () register_taxonomy ('operating_system', 'post', array ('hierarchical' => true, 'label' => 'Operativsystem', 'query_var' => true, 'rewrite' => true)); 

Mer information:

Läs mer om add_action.


Lägga klassificeringar till den nya taxonomin

När du väl har lagt till "Operativsystem" -statistiken till filen "functions.php", ska den visas som ett nytt objekt i panelen "Inlägg" på instrumentbrädan. Klicka på taxonomins namn för att lägga till och redigera de klassificeringar du vill inkludera.

Nu kan du lägga till och redigera operativsystem precis som du skulle lägga till generiska kategorier.


Lägga till mer taxonomier

Om du vill lägga till taxonomierna "RAM" och "Hard Drive" för att följa med exemplet, lägg bara till följande i din functions.php-fil:

 register_taxonomy ('ram', 'post', array ('hierarkisk' => true, 'label' => 'RAM', 'query_var' => true, 'rewrite' => true)); register_taxonomy ('hard_drive', 'post', array ('hierarkisk' => true, 'label' => 'Hårddisk', 'query_var' => true, 'rewrite' => true));

När det är klart kommer den ändrade delen av din functions.php-fil att se något ut så här:

 // Custom Taxonomy Code add_action ('init', 'build_taxonomies', 0); funktion build_taxonomies () register_taxonomy ('operating_system', 'post', array ('hierarchical' => true, 'label' => 'Operativsystem', 'query_var' => true, 'rewrite' => true)); register_taxonomy ('ram', 'post', array ('hierarkisk' => true, 'label' => 'RAM', 'query_var' => true, 'rewrite' => true)); register_taxonomy ('hard_drive', 'post', array ('hierarkisk' => true, 'label' => 'Hårddisk', 'query_var' => true, 'rewrite' => true)); 

Skapa en post med din nya taxonomi

Skapa några nya inlägg, och du får se dina nya taxonomier visas på skärmen Redigera inlägg. Välj vilka klassificeringar du anser vara tillämpliga på dina inlägg.


Visar en post olika taxonomier

Inget vi har gjort hittills kan ses av dina besökare. Vi skulle vilja att inlägg visar vilka anpassade taxonomier de klassificeras i, precis som inlägg ofta avslöjar deras kategorier och taggar.

För att göra det behöver vi bara göra ett enkelt tillägg till slingan i vissa mallfiler.


Visar taxonomisk klassificeringar på enskilda sidor

I tjugo temat och många andra listas ett inläggs kategorier och taggar under kroppstexten. Vi lägger till anpassad taxonomiinformation, om den existerar, precis före kategori- och tagginformationen.

För att detta ska ske måste vi redigera "single.php" -mallfilen, som normalt kallas för att visa ett enskilt inlägg. Min single.php-fil finns på: [website_root] /wp/wp-content/themes/twentyten/single.php.


Steg 1 Hitta rätt plats för att lägga till kod

I single.php, hitta raden med:

Detta visas strax före:

I tjugo innehåller denna div kategorierna, taggarna, permalinken och andra data för nuvarande inlägg. Vi lägger vår taxonomi information strax ovanför denna div.


Steg 2 Hämta Taxonomy Information om aktuell post

Böj vissa variabler för att hålla informationen om taxonomi och de olika taxonomier som vi kan förvänta oss att hitta.

 ID, 'operating_system', 'Operativsystem): ',', ',');

Här ringer vi WordPress-funktionen "get_the_term" -listan med följande parametrar:

  • $ Post-> ID : ID för nuvarande inlägg.
  • 'operativ system' : namnet på den anpassade taxonomin vi söker efter data. Vi frågar om det aktuella inlägget har fått några klassificeringar i taxonomin "operating_system".
  • 'Operativsystem)' : Om någonting returneras är det här strängen vi skulle vilja ha framför den.
  • ',' : Om flera artiklar returneras, är det här strängen som vi skulle vilja ha dem åtskilda av.
  • " : Om något returneras, är det här den sträng vi skulle vilja ha bakom den. I det här fallet vill vi inte lägga till något bakom resultatet.

Vi gör detsamma för de andra två taxonomierna som vi kan förvänta oss att innehålla data:

 $ ram_list = get_the_term_list ($ post-> ID, 'ram', 'RAM-alternativ: ',', ','); $ hd_list = get_the_term_list ($ post-> ID, 'hard_drive', 'Hårddiskalternativ: ',', ',');

Mer information:

Läs mer om "get_the_term_list."


Steg 3 Formatera resultat från klassificeringar, om någon

Kontrollera resultat i var och en av de tre möjliga taxonomierna. Om de existerar lägger du till dem i vår utmatning, liksom en linebreak.

 // Lägg till OS-lista om det här inlägget var så taggat om ("! = $ Os_list) $ taxo_text. =" $ Os_list
\ n "; // Lägg till RAM-lista om det här inlägget var så taggat om ("! = $ ram_list) $ taxo_text. = "$ ram_list
\ n "; // Lägg till HD-lista om det här inlägget var så taggat om ("! = $ hd_list) $ taxo_text. = "$ hd_list
\ n ";

Steg 4 Display Klassificering Resultat, om någon

Kontrollera om ovanstående steg resulterade i att någon taxonomiinformation alls skulle matas ut. Om taxonomyinfo finns existerar vi det inpaket i en div av klassen "postverktyg".

 // Output taxonomy information om det fanns någon // OBS: Vi kommer inte ens öppna en div om det inte finns något att sätta in i det. om ("! = $ taxo_text) ?> 

Steg 5 Kontrollera dina resultat

Besök en inläggssida, och du bör se några anpassade taxonomiklassificeringar som anges nedan.


Visa en lista över inlägg genom klassificering av taxonomi

Nu berättar våra enskilda inlägg vilka anpassade taxonomier de har klassificerats med. När de listar en anpassad taxonomi klassificering, ger de också en länk för att lista alla inlägg under den klassificeringen. Om du till exempel klickar på länken "Mac OS" bredvid "Operativsystem" i vårt inlägg kommer teoretiskt att lista alla inlägg med operativsystemets klassificering "Mac OS".

Det här händer emellertid inte ur rutan med WordPress version 3. Vi måste göra en anpassad mallfil för att visa taxonomyarkiv för att den ska fungera. WordPress låter besökare visa alla inlägg som tilldelats en viss kategori, eller alla inlägg som ges en viss tagg. När vi är färdiga här kan vi se alla inlägg som tilldelas särskilda klassificeringar i våra egna taxonomier också.

För att detta ska ske måste vi skapa mallfilen "taxonomy.php". WordPress kommer att försöka använda den här filen när den vill lista inlägg i en anpassad taxonomi.


Steg 1

Öppna filen "category.php", kopiera innehållet och klistra in den i en ny fil som heter "taxonomy.php." Spara taxonomy.php i temakatalogen. Till exempel är min taxonomy.php-fil på:
[Website_root] /wp/wp-content/themes/twentyten/taxonomy.php.


Steg 2 Hämta information om aktuell klassificering av taxonomi

I filen taxonomy.php behöver vi få information om den taxonomi som anges. Vi vill noga ha namn och beskrivning (om någon) för den valda klassificeringen.

Precis under , lägg till följande rad:

 $ term = get_term_by ('slug', get_query_var ('term'), get_query_var ('taxonomy'));

Detta får all information om den taxonomi som kallas den här sidan och returnerar den som ett objekt till variabeln $ termen. Till exempel returnerar "Mac OS" -klassificeringen ett objekt som sådant:

 stdClass Object ([term_id] => 13 [namn] => Mac OS [slug] => mac-os [term_group] => 0 [term_taxonomy_id] => 22 [taxonomy] => operativsystem [beskrivning] => => 0 [count] => 2)

Steg 3 Display Klassificering Namn och Beskrivning

Vi vill ändra sidnamnet för att berätta för besökare vad de tittar på. Sedan vi började med category.php-mallen kan vi ta den linje som brukade skriva ut kategorinavnet och ändra det lite för att ge oss vårt önskade sidnamn och, om tillämpligt, beskrivning.

Ändra följande rad från category.php:

 printf (__ ('Arkivarkiv:% s', 'tjugo'), ''. single_cat_title (", false). '');

Att läsa enligt följande:

 printf (__ ('Inlägg klassificerade under:% s', 'twenty'), ''. $ term_name. '');

Detta ändrar den statiska texten som börjar på linjen och lägger sedan in namnet på klassificeringen. (Obs! För korrekt lokalisering skulle vi behöva lägga till "Inlägg som är klassificerade under:" korrekt till språk / twentyten.pot-filen. Det ligger utanför ramen för denna handledning, men var medveten om överträdelsen här.)

Lägg sedan till följande:

 om ("! = $ term_descr) echo"

$ term_descr

\ n ";

Om det finns en beskrivning för denna klassificering kommer den att visas precis under titeln.

Efter att ha ändrats till taxonomy.php, besök en av dina inlägg som har fått en anpassad taxonomi klassificering. På grund av vårt tidigare arbete i filen "single.php" ska posten visa anpassade klassificeringar under den. Klicka bara på en av dessa klassificeringar för att se taxonomins notering på jobbet.


Slutsats

Jag hoppas att denna handledning förklarade klart vilka taxonomier som är och visade dig hur man använder dem i WordPress 3 som ett kraftfullt organisationsverktyg. Jag hoppas att ge en uppföljningstutorial som snart förklarar WordPress-anpassade posttyper, deras snäva relation med egna taxonomier och hur man använder dem. Tack så mycket för att du tog dig tid att besöka Nettuts!