Med utgivelsen av Wordpress 3.0 ble to gode måter å bedre organisere og vise innhold innført: posttyper og taksonomier. Disse to fremskrittene forbedrer Wordpress rolle som et allsidig content management system, og de fortsetter å bevise at WP ikke bare er en bloggplattform. Når 3.1 utgives med innleggformater, er det viktig at du forstår hvordan du bruker og implementerer posttyper og taksonomier.
I denne opplæringen vil jeg snakke deg gjennom følgende:
Når du har fullført disse trinnene, håper jeg å få drivstoff på prosjektene dine ved å undersøke andre fantastiske måter å integrere disse organisatoriske elementene i WordPress.
Når du tenker på posttyper, er det viktige ordet å huske organisasjon. Innleggstypen selv vil ikke legge til noen funksjonalitet, men det tillater oss å bedre organisere Wordpress-innhold og bygge admin-oversikter som er mer spesifikke for typen nettsted som vi jobber med.
Her er noen viktige ting å huske når du arbeider med posttyper:
"På samme måte som innlegg vises i eget arkiv med archive.php, vil egendefinerte innleggstyper bruke arkiv- posttype .php."
For annen informasjon om å integrere posttyper, spørre innleggstyper og generelle funksjoner, besøk kodeksen her.
Integrering av posttyper er ganske enkelt et spørsmål om å inkludere register_post_type
funksjon. Når du har tatt med dette i din functions.php-fil, bør nav-menyen din gå fra noe slikt:
til dette:
For å opprette egendefinerte innleggstyper, åpne malen din functions.php
filen i en editor, og plasser følgende funksjon i filen:
funksjon create_post_type () register_post_type ('mysite_reviews', array ('labels' => array ('navn' => __ ('Anmeldelser'), 'singular_name' => __ ('Review')), 'public' => true, 'menu_position' => 5, 'rewrite' => array ('slug' => 'vurderinger')))); add_action ('init', 'create_post_type');
Nedbrutt, legger dette til funksjonen create_post_type
, og registrerer innleggstypen mysite_reviews,
add_action ('init', 'create_post_type'); funksjon create_post_type () register_post_type ('mysite_reviews',
Du lurer kanskje på hvorfor jeg har oppkalt post_type mysite_reviews, og ikke bare anmeldelser. Jeg gjorde navnet mer iøynefallende for å sikre at min innleggstype ikke ville forstyrre egendefinerte innleggstypenavn fra andre plugins eller temaer.
En annen vennlig påminnelse, dine egendefinerte innleggstyper må ikke overstige 20 tegn, da det er grensen for databasekolonnen.
Her er et sammendrag av de viktige innleggstypeparametrene jeg har angitt ovenfor:
En fullstendig liste over parameterargumenter for posttyper finner du her.
Siden Wordpress-posttyper er bare en forlengelse av det eksisterende klassifikasjonssystemet, viser dem i et tema ganske likt det som allerede er på plass. Det er for øyeblikket tre primære måter å vise egendefinerte innleggstyper i temaene dine:
For å vise den nye posttypen mysite_reviews
, du vil åpne opp malfilen du vil vise den på (i mitt tilfelle lager jeg vanligvis en egendefinert home.php
for maler), og skriv inn følgende kode:
$ args = array ('post_type' => 'mysite_reviews', 'posts_per_page' => 10); $ loop = ny WP_Query ($ args); mens ($ loop-> have_posts ()): $ loop-> the_post (); tittelen(); ekko ''; the_excerpt (); ekko ''; EndWhile;
Dette oppretter bare en ny Wordpress loop som viser tittelen og utsnittet fra de 10 siste oppføringene i mysite_reviews
posttype.
Akkurat som du kan tilpasse måten individuelle innlegg vises via et temas single.php-fil, kan du tilpasse måten dine individuelle posttypeoppføringer vises på. Den enkleste måten å gjøre dette på er å opprette en duplikat av temaet ditt single.php-fil og gi nytt navn til det enkelt- posttypename php
. Derfra kan du tilpasse den filen til dine spesifikasjoner. Ved hjelp av eksemplet ovenfor, trenger vi en enkelt postmal som heter single-mysite_reviews.php
.
Mens denne funksjonen ikke vil være tilgjengelig før WP 3.1 utgives, kan posttyper også vises arkivstil ved å opprette en fil i temaet ditt kalt arkiv- posttypenavn .php. Så, hvis vi lager et arkiv for posttypen, ville vi opprette en arkivmal som heter arkiv-mysite_reviews.php
og legg den inn i vår malmappe.
Med tilpasset posttype-templering kan tilpassede temaopprettere lettere opprette abonnement og medlemskaps nettsteder ved å begrense innholdet på disse bestemte innleggene og sidene til bestemte brukergrupper.
Jeg vil ikke gå for mye i detalj her, da Paul Kaiser allerede har skrevet en flott oversikt over taksonomier og koden som er involvert for å implementere funksjonen (se opplæringen her). Nøkkelordet å huske når man tenker på taksonomier er klassifisering. De ligner på koder, men tillater dypere, mer innholdsspesifikke klassifiseringer.
I sannhet er de en ekstremt kraftig måte å gruppere ulike elementer på alle måter.
For eksempel, si at jeg har bruk av anmeldelser posttype fra ovenfor. Fordi jeg definitivt vil klassifisere den brede posttypen, kan jeg lage taksonomier som:
Med egendefinerte taksonomier kan jeg til og med gå dypere inn i klassifisering av de ovennevnte taksonomiene. Jeg kunne gå inn i filmgenrer, bokforfattere og produktmarkeder. Igjen, sammen med posttyper, øker dette kraftig Wordpress 'innholdshåndtering.
Samlet sett er taksonomier ganske enkle å implementere i din functions.php
fil. Husk at du kan gå hierarkisk med dem eller behandle dem som koder, så jo mer komplisert du vil ha, desto større er vanskeligheten. Uansett, her er en rask gjennomgang av hvordan å innlemme disse inn i temaet ditt.
Igjen, åpne opp din functions.php-fil og sett inn følgende kode:
funksjon movie_taxonomy () register_taxonomy ('movie_review', 'mysite_reviews', array ('hierarchical' => true, 'label' => 'Filmanmeldelse', 'query_var' => true, 'rewrite' => array '=>' film-anmeldelser '))); add_action ('init', 'movie_taxonomy');
For å bryte ned dette, gir vi taksonomien et formelt navn ("movie_review"), og vi legger det under posttypen "mysite_reviews", som vi opprettet tidligere.
funksjon movie_taxonomy () register_taxonomy ('movie_review', 'mysite_reviews',
Så passerer vi disse verdiene:
array ('hierarchical' => true, 'label' => 'Filmanmeldelse', 'query_var' => true, 'rewrite' => array ('slug' => 'filmanmeldelser'))
Dette gir følgende argumenter:
Sluttresultatet i vår admin nav skal se slik ut:
Videre kan vi dykke inn i det grensesnittet og legge til flere klassifiseringskategorier og struktur. Det grensesnittet ligner på kategorien grensesnitt som du kanskje allerede er kjent med.
Fra dette grensesnittet kan du redigere sløyfene i de ulike kategoriene innenfor din taksonomi, opprette nye kategorier og bestemme foreldre og barnekategorier.
En fullstendig liste over parameterargumenter for taksonomier finner du her.
Det er for øyeblikket tre primære måter å vise egendefinerte innleggstyper i temaene dine:
Akkurat som det er taggskyger, er det taksonomi-skyer. For å gjøre det enkelt, bruker både tagger og skyer wp_tag_cloud
funksjon. For å vise en rekke taksonomiske kategorier i en sky, vil vi bruke følgende kode:
'taxonomy_name_1', 'taxonomy_name_2')); ?>
For mer informasjon om funksjonen og dens parameterargumenter, besøk kodeksen.
Taxonomier kan også inkluderes i tilpassede spørringer, akkurat som vi gjorde med posttyper ovenfor. For eksempel, for å vise innhold fra taksonomien MOVIE_GENREfilmer
, vi må legge inn følgende kode i vår malfil:
$ args = array ('tax_query' => array ('taxonomy' => 'movie_genre', 'field' => 'slug', 'terms' => 'komedie')); query_posts ($ args);
Først bruker vi argumentet tax_query
slik at vi kan passere parametere som gjør at vi kan søke etter slug eller vilkår og returnere mer nøyaktige spørringsresultater. I dette eksemplet viste vi innlegg merket som "komedie" i den egendefinerte taksonomien "movie_genre". Igjen, som vi gjorde med posttyper, kan vi begrense antall innlegg som denne søket returnerer.
For å vise en kommandoramert liste over innlegg etter taksonomi, trenger vi ganske enkelt å sette følgende et sted i løkken:
ID, 'taxonomy name', 'Displayed Title:', ',', ');?>
Det finnes andre visningsalternativer for denne listen, og parametrene finner du her.
Nå som vi har muttere og bolter, tror jeg "Hvorfor bryr jeg meg om disse tingene?" er et virkelig rettferdig spørsmål. Mulighetene med posttyper og taksonomier, spesielt med å jobbe med kunder som ofte er for opptatt av å håndtere et nettsted, er uendelige. Dette, etter min mening, sparer tid for å skape nye adminfunksjoner og oppdatering av plugins, og åpner dører for nye muligheter med mye mindre arbeid (og koding) involvert.
Nedenfor er noen ideer som jeg hadde om hvordan å integrere disse i egentlig arbeid:
For det første kan en gjennomgangsside dra nytte av de tilpassede templeringsalternativene som er oppført ovenfor (enkelt og arkiv)
Her er noen flere posttyper og taksonomier som du kan implementere på en gjennomgangsside:
Mens det er noen gode maler for eiendomsmegling steder, kan posttyper og taksonomier la kreative mennesker lage tilpassede maler som lett kan vedlikeholdes av kunder og webmastere. Her er bare noen ideer å bruke i ditt neste prosjekt:
En ting som Wordpress virkelig mangler (etter min mening) er et godt hendelsesstyringssystem. Posttyper og taksonomier kan lett ta vare på det ved å tilby et system for å klassifisere månedlige hendelser etter sted, dag eller annet system du kan tenke på.
Med opprettelsen av en ny posttype og -maler kan du opprette en tilpasset premiumkategori for bloggen din eller nettstedet ditt, og integrere en betalingsgateway for å lage ditt eget medlemskapsside.
Ved å lage en produktposttype og mal, kan du enkelt legge til og vise produkter til salgs på nettstedet ditt. I tillegg vil taksonomier tillate enkel produktorganisasjon.
Jeg håper denne opplæringen har forklart innleggstyper og taksonomier i Wordpress 3.0, og hvorfor de er en ekstremt verdifull ressurs å implementere i dine prosjekter. Jeg vet at det er mange advokater for plugins (og jeg er selv en plugin author), men jeg håper at jeg har gjort saken at implementering av disse tingene er en veldig enkel oppgave, og en som vil spare tid for både deg og din klient i på lang sikt.
Listen over ideer over er en liten i beste fall, så jeg vil gjerne høre hvordan du har implementert dem i prosjektene dine eller kanskje noen andre bruksområder som jeg ikke skrev opp.
Takk så mye for å lese!