Tar WordPress Egendefinerte Taxonomies til neste nivå

WordPress egendefinerte taksonomier er en fin måte å organisere nettstedets innhold på, men hva er de egentlig? Hvordan kan de implementeres effektivt? Enda viktigere skjønt, hvordan kan de ha nytte av nettstedet ditt? Frykt ikke, det du skal lese i det følgende er den mest omfattende guiden til WordPress-tilpassede taksonomier du finner på internett i dag.


Egendefinert Taxonomy Basics

På sitt mest grunnleggende nivå er en taksonomi bare en metode for å gruppere ting sammen. Hvis du har publisert et innlegg i WordPress før, så sjansene er at du allerede har brukt taksonomier. Standardkoder og -kategorier innen WordPress betraktes som taksonomier! La oss nå snakke mer om egendefinerte taksonomier. WordPress har gitt deg mulighet til å lage dine egne taksonomier siden versjon 2.3, men de har egentlig bare begynt å bli populære siden rundt versjon 2.9.

En populær måte å forklare egendefinerte taksonomier på er å bruke eksemplet på filmer. La oss late som vi skriver en artikkel om filmen "Terminator 2". Hva vi vanligvis gjør med standard innebygde taksonomier, klassifiserer artikkelen ved hjelp av koder og kategorier. Problemet med de innebygde taksonomiene er at de er ekstremt generiske.

Vi fortsetter med dette eksemplet og utgir at vi har skrevet inn "Arnold Schwarzenegger" som en av våre tagger. For de som ikke er kjent med den østerrikske skuespilleren, kan dette være ganske forvirrende. Det er åpenbart en persons navn, men er denne personen en skuespiller? En regissør? En produsent? En mye bedre tilnærming ville være å skape en tilpasset taksonomi kalt "Skuespillere" og legge Arnolds navn til den aktuelle taksonomien. Vi kunne gå enda lenger, og legge til ekstra tilpassede taksonomier for andre typiske filmgrupperinger som sjangere, regissører, produsenter og andre.


forståelse Vilkår

Ett ord du også vil gjøre det godt å bli kjent med er "term". I WordPress er et begrep en enkelt klassifisering som lever innenfor og er definert av dens taksonomi. I vårt tidligere eksempel hadde vi en taksonomi kalt "Skuespillere", derfor ville våre vilkår være: Arnold Schwarzenegger, Linda Hamilton, Edward Furlong, osv..


Hvordan kan tilpassede taxonomier ha fordel av nettstedet mitt?

Egendefinerte taksonomier kan øke organisasjonen og brukervennligheten til nettstedet ditt. På grunn av fleksibiliteten som følger med egendefinerte taksonomier, vil de alltid være mer spesifikke for ditt emne når du sammenligner med koder og kategorier. Et åpenbart eksempel er å inkludere taksonomiene dine nederst eller på toppen av artikkelen din. I eksemplet nedenfor har jeg opprettet tre egendefinerte taksonomier, og vist de tilknyttede vilkårene under hovedinnholdsområdet for artikkelen.

Kul riktig? Det er ikke den eneste bruken skjønt. Du vil merke i eksemplet ovenfor at teksten ser ut til å være hyperkoblet, det er fordi den er. Egendefinerte taksonomier tillater at du har arkiver for bestemte vilkår. Dette tillater ikke bare en bedre innholdsorganisasjon, men tillater også brukere å abonnere på bestemte vilkår via RSS. En annen mindre implementert bruk for egendefinerte taksonomier er å bare bruke dem som erstatning for koder. Jeg bestemte meg for å ta denne nøyaktige tilnærmingen til en spillblogg jeg nylig lanserte. Du trenger ikke alltid å fremheve det faktum at du bruker egendefinerte taksonomier, bare husk, deres virkelige kraft ligger innenfor potensialet for overlegen arkivering, søking, spørring og URL-struktur.

Det er forskjellige andre fordeler med å bruke egendefinerte taksonomier, men i stedet for å diskutere teoretiske brukssaker, la oss i stedet se på noen praktiske eksempler med kode for å sikkerhetskopiere det.


Skrive vår første tilpassede taxonomi

Nå som vi forstår hvilke taksonomier som er og hvordan de skal brukes, kan vi begynne å implementere dem i våre temaer. For å begynne med registrerer vi først vår tilpassede taksonomi. I dette eksemplet lager jeg en taksonomi kalt "Skuespillere". Hvis du følger med denne opplæringen, vil du åpne temaet ditt functions.php fil og sett inn følgende kode.

 $ labels = array ('name' => __ ('Skuespillere', 'din-temaer-tekst-domene'), 'singular_name' => __ ('Skuespiller', 'dine temaer' search_items '=> __ (' Search Actors ',' your-themes-text-domain '),' popular_items '=> __ (' Populære skuespillere ',' dine temaer-tekstdomener '),' all_items '=> __ ('Alle skuespillere', 'dine temaer-tekst-domene'), 'parent_item' => __ ('Foreldre skuespiller', 'dine temaer-tekst-domene'), 'edit_item' => __ Skuespiller "," din-temaer-tekstdomenet "), 'update_item' => __ ('Oppdater skuespiller', 'dine temaer-tekstdomener'), 'add_new_item' => __ ('Legg til ny skuespiller' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny skuespiller', 'dine temaer-tekstdomener'), 'separate_items_with_commas' => __ ('Separate Actors with commas' -tema-tekst-domene '),' add_or_remove_items '=> __ (' Legg til eller fjern skuespillere ',' dine temaer-tekstdomener '),' choose_from_most_used '=> __ (' Velg blant de mest brukte skuespillerne ' din-temaer-tekst-domene ')); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('skuespillere', 'innlegg', $ args);

Ikke vær redd for mengden kode her, det er ganske enkelt når du bryter det ned. Flertallet av koden er plassert i $ etiketter array. Denne kategorien definerer innholdet av visse etiketter i WordPress-dashbordet. De $ args array er der den virkelige magien skjer; Dette definerer innstillingene for taksonomien.

Du vil merke at for argumentet "etiketter" passerer vi i etikettarmen vi opprettet tidligere. Et annet argument som er verdt å nevne er det "hierarkiske" argumentet. Dette definerer hvorvidt våre taksonomier har evne til nestede taksonomier eller "barn" taksonomier. I vårt eksempel vil vi ikke kreve denne spesielle funksjonaliteten, men ta hensyn til dens eksistens som du kanskje trenger et granulært taksonomisystem i fremtidige prosjekter.

Forklare hvert argument er utenfor omfanget av denne bestemte opplæringen, men hvis du vil vite mer, kan du alltid studere disse argumentene i detalj på den offisielle WordPress-koden register_taxonomy side.

Det siste å merke seg her er anropet til register_taxonomy funksjon. Det første argumentet definerer navnet på taksonomien (dette brukes internt innen WordPress). Det andre argumentet definerer hvilken posttype taksonomien vil bli knyttet til. I vårt scenario legger vi det til standard WordPress-innlegg. Alternativt kan du legge den til en egendefinert innleggstype eller til og med flere forskjellige posttyper ved å sende den en rekke posttyper.

Nå som vi har registrert vår tilpassede taksonomi, vil du legge merke til at vi nå har en "Actors" meta-boks som sitter i høyre kolonne på WordPress-postredigeringssiden. På dette stadiet vil legge til vilkår i denne meta-boksen lagre dem i databasen, men vil ikke vise dem på forsiden av temaet ditt. La oss implementere eksemplet som ble presentert tidligere med de tre taksonomilistene, plassert nederst i posten.

For dette eksempelet må du duplisere koden som brukes til å registrere skuespilleren takknemlighet to ganger, og gi nytt navn til etikettene for å gjenspeile våre ekstra taksonomier, sjangere og forfattere. Her er hva min functions.php filen ser ut så langt.

 $ labels = array ('name' => __ ('Skuespillere', 'din-temaer-tekst-domene'), 'singular_name' => __ ('Skuespiller', 'dine temaer' search_items '=> __ (' Search Actors ',' your-themes-text-domain '),' popular_items '=> __ (' Populære skuespillere ',' dine temaer-tekstdomener '),' all_items '=> __ ('Alle skuespillere', 'dine temaer-tekst-domene'), 'parent_item' => __ ('Foreldre skuespiller', 'dine temaer-tekst-domene'), 'edit_item' => __ Skuespiller "," din-temaer-tekstdomenet "), 'update_item' => __ ('Oppdater skuespiller', 'dine temaer-tekstdomener'), 'add_new_item' => __ ('Legg til ny skuespiller' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny skuespiller', 'dine temaer-tekstdomener'), 'separate_items_with_commas' => __ ('Separate Actors with commas' -tema-tekst-domene '),' add_or_remove_items '=> __ (' Legg til eller fjern skuespillere ',' dine temaer-tekstdomener '),' choose_from_most_used '=> __ (' Velg blant de mest brukte skuespillerne ' din-temaer-tekst-domene ')); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('skuespillere', 'innlegg', $ args); $ labels = array ('name' => __ ('Genrer', 'dine temaer-tekst-domene'), 'singular_name' => __ ('Genre', 'dine temaer' search_items '=> __ (' Search Genres ',' ditt-temaer-tekst-domene '),' popular_items '=> __ (' Populære sjangere ',' dine temaer-tekstdomener '),' all_items '=> __ ('All Genres', 'Your-Themes-Text-Domain'), 'parent_item' => __ ('Parent Genre', 'Your-Themes-Text-Domain'), 'edit_item' => __ Genre ',' ditt-temaer-tekst-domene '),' update_item '=> __ (' Oppdater sjangre ',' dine temaer-tekstdomener '),' add_new_item '=> __ (' Legg til nytt sjanger ' 'your-themes-text-domain'), 'new_item_name' => __ ('Ny sjanger', 'dine temaer-tekst-domene'), 'separate_items_with_commas' => __ ('Separate sjangre med komma' -tema-tekst-domene '),' add_or_remove_items '=> __ (' Legg til eller fjern sjangre ',' dine temaer-tekstdomener '),' choose_from_most_used '=> __ (' Velg fra mest brukte sjangere ' din-temaer-tekst-domene ')); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('sjangre', 'innlegg', $ args); $ labels = array ('name' => __ ('Forfattere', 'din-temaer-tekstdomenet'), 'singular_name' => __ ('Skribent', 'dine temaer' search_items '=> __ (' Søk forfattere ',' din-temaer-tekstdomenet '),' popular_items '=> __ (' Populære forfattere ',' dine temaer-tekstdomener '),' all_items '=> __ ('Alle forfattere', 'din-temaer-tekstdomenet'), 'parent_item' => __ ('Foreldreforfatter', 'dine temaer-tekstdomener'), 'edit_item' => __ Writer ',' your-themes-text-domain '),' update_item '=> __ (' Oppdater Writer ',' dine temaer-tekstdomener '),' add_new_item '=> __ (' Legg til ny writer ' 'your-themes-text-domain'), 'new_item_name' => __ ('New Writer', 'din-temaer-tekstdomenet'), 'separate_items_with_commas' => __ ('Separate Writers with commas' -tema-tekst-domene '),' add_or_remove_items '=> __ (' Legg til eller fjern forfattere ',' dine temaer-tekstdomener '),' choose_from_most_used '=> __ (' Velg blant de fleste brukte forfattere ' din-temaer-tekst-domene ')); $ args = array ('labels' => $ etiketter, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('forfattere', 'innlegg', $ args);

Nå som vi har registrert våre tre taksonomier, er vi klare til å begynne å vise våre nyopprettede taksonomier og vilkår innenfor vårt tema. Bare vær sikker på å redigere et eksisterende innlegg for å legge til noen dummy vilkår i de nye taksonomi meta boksene.

Sett inn følgende kode nederst på din functions.php fil.

 funksjon display_post_taxonomies ($ content) if (is_single ()) $ args = array ('public' => true, '_builtin' => false); $ output = 'objekter'; $ operator = 'og'; $ taxonomies = get_taxonomies ($ args, $ output, $ operator); hvis ($ taxonomies) $ content. = '
'; foreach ($ taxonomier som $ taksonomi) $ args = array ('orderby' => 'navn', 'echo' => false, 'taxonomy' => $ taxonomy-> navn, 'title_li' => ''. __ ($ taksonomi-> etiketter-> navn, 'din-temaer-tekst-domene'). '',' show_option_none '=> __ (' Nei '. $ taksonomi-> etiketter-> navn,' din-temaer-tekst-domene ')); $ content. = '
    '. wp_list_categories ($ args). '
'; $ content. = '
'; returnere $ innhold; add_filter ('the_content', 'display_post_taxonomies');

I et nøtteskall filtrerer vi innleggets innhold for å legge til vår egendefinerte taksonomiseksjon nederst i innlegget. Ved å bruke et filter i stedet for en malmerke betyr det at vi unngår å redigere bestemte malfiler. Ikke bare er dette enklere, men det tillater oss også å bruke denne koden i flere temaer på en mer fleksibel måte.

Du vil også legge merke til at denne funksjonen er ekstremt generisk; Vi refererer ikke til de taksonomiene vi opprettet tidligere. Ovennevnte kode tar bare egendefinerte taksonomier, kaller get_taxonomies fungere med args array indeksen "built_in"satt til falsk sikrer at vi ikke inkluderer noen kombinert WordPress-taksonomier.

Vi går gjennom våre taksonomier og begynner å legge til flere HTML-elementer for formatering. Innenfor vår løkke bruker vi også wp_list_categories funksjon. Denne funksjonen forbereder en uordnet liste over termer for en gitt taksonomi. Det håndterer ikke bare utarbeidelsen av HTML-strukturen, den kobler også automatisk hver enkelt term til sin respektive arkivside.

Nå, hvis du laster opp innlegget ditt, vil du legge merke til at du har et sett med tre uordnede lister, som hver viser en taksonomisk overskrift med tilhørende vilkår under. Problemet er, det er ingen styling ennå. Legg til følgende kode for temaene dine style.css fil å spruce den opp litt.

 .taxonomy_container overflow: hidden; skjerm: blokk; klare: begge; margin-bunn: 20px;  .taxonomy_container ul margin: 0px; polstring: 0px; liste-stil-type: none;  .taxonomy_container> ul bredde: 31%; flyte: venstre; margin-høyre: 3,5%;  .taxonomy_container> ul: siste barn margin-right: 0%;  .taxonomy_title padding-left: 2px; polstring-bunn: 2px; border-bottom: 2px solid # 333; skjerm: blokk; margin-bunn: 2px; font-weight: bold;  .taxonomy_container> ul li ul li polstring-venstre: 2px; polstring-bunn: 3px; grensebunn: 1px prikket #ccc; margin-bunn: 3px;  .taxonomy_container> ul li ul li: siste barn border-bottom: 0px; 

Konklusjon

Der har du det folk; del en av vår guide til å ta WordPress egendefinerte taksonomier til neste nivå. I dag har vi sett på hvilke egendefinerte taksonomier, hva de er gode til og hvordan de skal implementeres effektivt i temaet ditt. I den neste artikkelen vil vi se på å tilpasse taksonomi og termografi arkivmaler.