Tar WordPress anpassade taxonomier till nästa nivå

WordPress anpassade taxonomier är ett bra sätt att organisera din webbplats innehåll, men vad är de exakt? Hur kan de genomföras effektivt? Ännu viktigare, hur kan de gynna din webbplats? Rädsla inte, vad du ska läsa i följande är den mest omfattande guiden till WordPress anpassade taxonomier hittar du på internet idag.


Custom Taxonomy Basics

På sin mest grundläggande nivå är en taxonomi helt enkelt ett sätt att gruppera saker ihop. Om du har publicerat ett inlägg i WordPress innan, då är chansen att du redan har använt taxonomier. Standardkoderna och kategorierna inom WordPress betraktas som taxonomier! Nu, låt oss prata mer om anpassade taxonomier. WordPress har gjort det möjligt för dig att skapa egna taxonomier sedan version 2.3, men de har bara verkligen börjat bli populära sedan runt version 2.9.

Ett populärt sätt att förklara egna taxonomier är att använda exemplet på filmer. Låt oss låtsas att vi skriver en artikel om filmen "Terminator 2". Vad vi vanligtvis gör med standard inbyggda taxonomier, klassificerar artikeln med hjälp av taggar och kategorier. Problemet med de inbyggda taxonomierna är att de är extremt generiska.

Vi fortsätter med det här exemplet och låtsas att vi har skrivit in "Arnold Schwarzenegger" som en av våra taggar. För de som inte är bekanta med den österrikiska skådespelaren kan detta vara ganska förvirrande. Det är uppenbarligen en persons namn, men är den här personen en skådespelare? En direktör? En producent? Ett mycket bättre tillvägagångssätt skulle vara att skapa en anpassad taxonomi som heter "Skådespelare" och lägga till Arnolds namn till den särskilda taxonomin. Vi kunde gå ännu längre och lägga till ytterligare anpassade taxonomier för andra typiska filmgrupper som genrer, regissörer, producenter och andra.


Förståelse Villkor

Ett ord som du också skulle göra bra för att bekanta dig med är "term". I WordPress är en term en enda klassificering som lever inom och definieras av dess taxonomi. I vårt tidigare exempel hade vi en taxonomi som heter "Skådespelare", därför skulle våra villkor vara: Arnold Schwarzenegger, Linda Hamilton, Edward Furlong, etc.


Hur kan anpassade taxonomier dra nytta av min hemsida?

Anpassade taxonomier kan öka din webbplatss organisation och användbarhet avsevärt. På grund av flexibiliteten som följer med anpassade taxonomier, kommer de alltid att vara mer specifika för ditt ämne än valet jämfört med taggar och kategorier. Ett tydligt exempel är att inkludera dina taxonomier längst ner eller upp i din artikel. I exemplet nedan har jag skapat tre anpassade taxonomier och visade de associerade termerna under artikelns huvudinnehållsområde.

Kall rätt? Det är dock inte den enda användningen. Du noterar i exemplet ovan att texten verkar vara länkad, det beror på att den är. Anpassade taxonomier gör att du kan ha arkiv för specifika villkor. Detta möjliggör inte bara en bättre innehållsorganisation utan ger även användarna möjlighet att prenumerera på specifika villkor via RSS. En annan mindre implementerad användning för anpassade taxonomier är att helt enkelt använda dem som ersättning för taggar. Jag bestämde mig för att ta denna exakta strategi för en spelblog som jag nyligen lanserade. Du behöver inte alltid markera det faktum att du använder anpassade taxonomier, bara kom ihåg att deras verkliga kraft ligger inom potentialen för överlägsen arkivering, sökning, frågande och webbadressstruktur.

Det finns olika andra fördelar med att använda egna taxonomier, men snarare än att diskutera teoretiska användningsfall, låt oss istället titta på några praktiska exempel med kod för att säkerhetskopiera det.


Skriva vår första anpassade taxonomi

Nu när vi förstår vad taxonomier är och hur man använder dem, kan vi börja implementera dem i våra teman. För att börja med registrerar vi först vår anpassade taxonomi. I det här exemplet skapar jag en taxonomi som heter "Skådespelare". Om du följer med denna handledning, vill du öppna ditt tema functions.php fil och sätt in följande kod.

 $ labels = array ('name' => __ ('Skådespelare', 'din-teman-textdomän'), 'singular_name' => __ ('Skådespelare' search_items '=> __ (' Sökaktörer ',' din-teman-textdomän '),' popular_items '=> __ (' Populära aktörer ',' din-teman-textdomän '),' all_items '=> __ ('Alla skådespelare', 'din-teman-text-domänen'), 'parent_item' => __ ('Förälderskådespelare', 'din-teman-textdomen'), 'edit_item' => __ Skådespelare "," din-teman-textdomän ")," update_item "=> __ (" Uppdatera skådespelare "," din-teman-textdomän "), 'add_new_item' => __ ('Lägg till ny skådespelare' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny skådespelare', 'din-teman-textdomän'), 'separate_items_with_commas' => __ ('separata skådespelare med kommatecken' -themes-text-domain '),' add_or_remove_items '=> __ (' Lägg till eller ta bort skådespelare ',' din-teman-textdomän '),' choose_from_most_used '=> __ (' Välj bland mest använda skådespelare ' din-teman-text-domänen ")); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('aktörer', 'post', $ args);

Oroa dig inte med koden här, det är helt enkelt när du bryter ner det. Huvuddelen av koden finns i $ etiketter array. Denna grupp definierar innehållet i vissa etiketter i WordPress-instrumentpanelen. De $ args array är där den verkliga magien händer; Detta definierar inställningarna för taxonomin.

Du kommer att notera att för argumentet "Etiketter" passerar vi i etikettuppsättningen vi skapade tidigare. Ett annat argument som är värd att nämna är det hierarkiska argumentet. Detta definierar huruvida våra taxonomier har förmåga hos nestade taxonomier eller "taxonomier" för barn. I vårt exempel kommer vi inte att behöva denna speciella funktionalitet utan notera dess existens eftersom du kanske behöver ett granulärt taxonomisystem i framtida projekt.

Att förklara varje argument ligger utanför ramen för den här handledningen, men om du vill veta mer kan du alltid studera dessa argument i detalj på den officiella WordPress-koden register_taxonomy sida.

Det sista att notera här är samtalet till register_taxonomy fungera. Det första argumentet definierar namnet på taxonomin (det här används internt inom WordPress). Det andra argumentet definierar vilken posttyp som taxonomin kommer att fästas till. I vårt scenario bifogar vi det till vanliga WordPress-inlägg. Alternativt kan du bifoga den till en anpassad posttyp eller till och med flera olika posttyper genom att skicka den till en rad posttyper.

Nu när vi har registrerat vår anpassade taxonomi, kommer du märka att vi nu har en "Actors" meta box sitter i högra kolumnen på WordPress-postredigeringssidan. Vid detta tillfälle kommer tillägg av termer i denna meta box att spara dem i databasen men kommer inte att visa dem på framsidan av ditt tema. Låt oss genomföra det exempel som presenterades tidigare med de tre taxonomilistorna, som ligger längst ner i posten.

För det här exemplet behöver du duplicera koden som används för att registrera aktörernas taxonomi två gånger och byta namn på etiketterna för att återspegla våra ytterligare taxonomier, genrer och författare. Här är vad min functions.php filen ser ut så långt.

 $ labels = array ('name' => __ ('Skådespelare', 'din-teman-textdomän'), 'singular_name' => __ ('Skådespelare' search_items '=> __ (' Sökaktörer ',' din-teman-textdomän '),' popular_items '=> __ (' Populära aktörer ',' din-teman-textdomän '),' all_items '=> __ ('Alla skådespelare', 'din-teman-text-domänen'), 'parent_item' => __ ('Förälderskådespelare', 'din-teman-textdomen'), 'edit_item' => __ Skådespelare "," din-teman-textdomän ")," update_item "=> __ (" Uppdatera skådespelare "," din-teman-textdomän "), 'add_new_item' => __ ('Lägg till ny skådespelare' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny skådespelare', 'din-teman-textdomän'), 'separate_items_with_commas' => __ ('separata skådespelare med kommatecken' -themes-text-domain '),' add_or_remove_items '=> __ (' Lägg till eller ta bort skådespelare ',' din-teman-textdomän '),' choose_from_most_used '=> __ (' Välj bland mest använda skådespelare ' din-teman-text-domänen ")); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('aktörer', 'post', $ args); $ labels = array ('name' => __ ('Genrer', 'din-teman-textdomän'), 'singular_name' => __ ('Genre' search_items '=> __ (' Sök genrer ',' din-teman-text-domänen '),' popular_items '=> __ (' Populära genrer ',' din-teman-textdomän '),' all_items '=> __ ('All Genres', 'Your-Themes-Text-Domain'), 'parent_item' => __ ('Äldre Genre', 'Din Teman-Text-Domän'), 'edit_item' => __ Genre "," Din-Teman-Text-Domän ")," Update_item "=> __ (" Uppdatera Genre "," Din-Teman-Text-Domän "), 'add_new_item' => __ ('Lägg till nytt genre' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny genre', 'din-teman-textdomän'), 'separate_items_with_commas' => __ ('Separate Genres with commas' -themes-text-domain '),' add_or_remove_items '=> __ (' Lägg till eller ta bort genrer ',' din-teman-text-domänen '),' choose_from_most_used '=> __ (' Välj bland mest använda genrer ' din-teman-text-domänen ")); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('genrer', 'post', $ args); $ labels = array ('name' => __ ('Författare', 'din-teman-textdomän'), 'singular_name' => __ ('Writer' search_items '=> __ (' Sök författare ',' din-teman-textdomän '),' popular_items '=> __ (' Populära författare ',' din-teman-textdomän '),' all_items '=> __ ("All Writers", "Your-Themes-Text-Domain"), "parent_item" => __ ("Författare", "Din-Teman-Text-Domän"), "Edit_item" => __ Writer ',' din-teman-text-domänen '),' update_item '=> __ (' Uppdatera skrivare ',' din-teman-textdomän '),' add_new_item '=> __ (' Add New Writer ' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny skrivare', 'din-teman-textdomän'), 'separate_items_with_commas' => __ ('Separate Writers with commas' -themes-text-domain '),' add_or_remove_items '=> __ (' Lägg till eller ta bort författare ',' din-teman-textdomän '),' choose_from_most_used '=> __ (' Välj bland mest använda författare ' din-teman-text-domänen ")); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ("författare", "post", $ args);

Nu när vi har registrerat våra tre taxonomier, är vi redo att börja visa våra nyskapade taxonomier och villkor inom vårt tema. Var noga med att redigera ett befintligt inlägg för att lägga till några dummy villkor i de nya taxonomy meta rutorna.

Sätt in följande kod längst ner på din functions.php fil.

 funktion display_post_taxonomies ($ content) if (is_single ()) $ args = array ('public' => true, '_builtin' => false); $ output = 'objects'; $ operator = 'och'; $ taxonomies = get_taxonomies ($ args, $ output, $ operator); om ($ taxonomics) $ content. = '
'; $ args = array ('orderby' => 'namn', 'eko' => false, 'taxonomy' => $ taxonomy-> namn, 'title_li' => ''. __ ($ taxonomy-> labels-> namn, 'din-teman-text-domän'). '',' show_option_none '=> __ (' Nej '. $ taxonomy-> etiketter-> namn,' din-teman-text-domän ')); $ content. = '
    '. wp_list_categories ($ args). '
'; $ content. = '
'; returnera $ innehåll add_filter ('the_content', 'display_post_taxonomies');

I ett nötskal filtrerar vi inläggets innehåll för att lägga till vår anpassade taxonomisektion längst ner i inlägget. Att använda ett filter istället för en malltag betyder att vi undviker att redigera specifika mallfiler. Det är inte bara det här enklare, men det låter oss också använda denna kod i flera teman på ett mer flexibelt sätt.

Du kommer också märka att denna funktion är extremt generisk; Vi hänvisar inte alls till de taxonomier som vi skapade tidigare. Ovanstående kod tar bara anpassade taxonomier, kallar get_taxonomies funktion med args array index "inbyggt"inställd på felaktigt säkerställer att vi inte inkluderar några bundna WordPress-taxonomier.

Vi slår sedan igenom våra taxonomier och börjar lägga till ytterligare HTML-element för formatering. Inom vår loop använder vi oss också av wp_list_categories fungera. Denna funktion förbereder en orörd lista över termer för en given taxonomi. Det hanterar inte bara förberedelsen av HTML-strukturen, det länkar också automatiskt varje enskild term till respektive arkivsida.

Nu, om du laddar upp ditt inlägg märker du att du har en uppsättning av tre oorderade listor, var och en visar en rubrik för rubriker med de associerade termerna nedan. Problemet är att det inte finns någon styling än. Lägg till följande kod i dina teman style.css fil att spruce upp det lite.

 .taxonomy_container overflow: hidden; display: block; klara: båda; marginalbotten: 20px;  .taxonomy_container ul margin: 0px; vaddering: 0px; lista-stil-typ: none;  .taxonomy_container> ul bredd: 31%; flyta till vänster; marginal-höger: 3,5%;  .taxonomy_container> ul: sista barnet margin-right: 0%;  .taxonomy_title padding-left: 2px; kuddebotten: 2px; gränsbotten: 2px solid # 333; display: block; marginal-botten: 2px; font-weight: bold;  .taxonomy_container> ul li ul li padding-left: 2px; vadderande-botten: 3px; gränsbotten: 1px prickad #ccc; marginal-botten: 3px;  .taxonomy_container> ul li ul li: sista barnet border-bottom: 0px; 

Slutsats

Där har du det folk del en av vår guide till att ta WordPress anpassade taxonomier till nästa nivå. Idag har vi tittat på vilka anpassade taxonomier, vad de är bra på och hur man implementerar dem effektivt i ditt tema. I nästa artikel tittar vi på att anpassa din taxonomi och terminsarkivmallar.