Rock-Solid WordPress 3.0-temaer ved hjelp av egendefinerte innleggstyper

WordPress-fellesskapet summende med spenning over det snart å bli utgitt WordPress 3.0. Foreløpig i Beta 2 nå, vil WordPress 3.0 ha mange spennende nye funksjoner, for eksempel et nytt standard tema og bedre menybehandling. Sannsynligvis den mest spennende av disse funksjonene er egendefinerte innleggstyper. I denne opplæringen snakker vi om å skape og bruke egendefinerte innleggstyper for å lage et rockfast tema.


Hva er en egendefinert innleggstype?

Vel, ifølge WordPress Codex:

"Posttype refererer til de ulike strukturerte dataene som opprettholdes i WordPress-posttabellen. Egendefinerte innleggstyper lar brukerne enkelt lage og administrere slike ting som porteføljer, prosjekter, videobiblioteker, podcaster, sitater, chatter og hva som helst en bruker eller utvikler kan tenke meg. "

I hovedsak lar det oss utviklere lage nye typer innlegg som ligner på innlegg og sidetyper, som alle vises i hovednavigasjonen i WordPress-administrasjonen. Det er flere fordeler med dette; Mest spesielt, vi trenger ikke lenger plugins for å lage spesielle typer, vi kan bygge et tema som bygger mindre på tilpassede felt (som vi kjenner dem), og de gjør det enklere for kunder og ikke-tekniske brukere å administrere nettstedet. I stedet for å fortelle dem å lage et "innlegg" og sørg for å fylle ut alle typer egendefinerte felt for å si musikk, kan vi bare fortelle dem at de klikker "Musikk" for å legge til et nytt musikkpost.

La oss komme i gang!

I denne opplæringen vil vi:

  • Opprett en tilpasset posttype for produkter med egne innganger
  • Opprett en tilpasset "taksonomi" for typen.
  • Lag en temmalat for å gå sammen med den nye typen.

Registrer egendefinert innleggstype

Alt dette vil bli gjort fra vårt tema's functions.php-fil. Jeg endrer standard 3.0-temaet, TwentyTen.

Det første vi skal gjøre er å fortelle WordPress at vi vil registrere en ny egendefinert type. Her er koden:

 add_action ('init', 'product_register'); funksjon product_register () $ args = array ('label' => __ ('Produkter'), 'singular_label' => __ ('Produkt'), 'public' => true, 'show_ui' => true, 'capability_type '=>' post ',' hierarkisk '=> false,' rewrite '=> true,' supports '=> array (' tittel ',' editor ',' miniatyrbilde ')); register_post_type ('produkt', $ args); 

Den første linjen er en krok for å fortelle WordPress at vi vil ringe funksjonen product_register () under initialisering. Det er i den funksjonen at vi registrerer den nye posttypen.

Funksjonen register_post_type () aksepterer to argumenter: navnet vi vil gi vår posttype, og en liste over argumenter som brukes til å lage den posttypen, som vi legger inn i en gruppe som heter $ args. Du kan lese nøyaktig hva alle argumentene er her, men jeg vil påpeke viktige.

  • etikett og singular_label: Dette er etikettene som vi vil at de skal vises i WordPress-administrasjonen. 'label' vil dukke opp i admin nav og hvor som helst som refererer til flere oppføringer av den typen (Rediger Produkter, for eksempel). 'singular_label' vil dukke opp når en av den typen er referert (Legg til produkt, for eksempel).
  • capability_type: Dette forteller WordPress hvilken innfødt type (post, side, vedlegg, revisjon eller nav-meny-element) den tilpassede typen oppfører seg som. Ved å gjøre det til en "post" -type, kan vi gjøre ting som legg det til en kategori.
  • omskrive: Fortell WordPress om (eller hvordan) å bruke permalinks formatering. Du kan sende en boolsk som vi gjorde, eller en rekke argumenter for å bruke et egendefinert permalink-format til typen.
  • støtter: Dette er alt på siden Legg til / rediger som vil vises. Vi ønsker å ha tittel, redaktør (innholdet) og miniatyrbilder. Deretter legger vi til våre egne tilpassede innganger ved å maskere tilpassede felt som inputfelter for vår tilpassede type.

Legge til våre egne innganger

La oss legge til våre egne tilpassede innganger for vår nye type. Siden vi nå kan lage nye posttyper, kan vi gjøre de egendefinerte feltene mer strømlinjeformede for brukere som kanskje ikke er like kjent med WordPress som vi er. Det er verdt å merke seg at denne funksjonaliteten har vært tilgjengelig siden 2.5 og frem til dette punktet, har blitt brukt primært av plugin-utviklere. Her skal vi legge til et prisfelt.

 ID); $ pris = $ tilpasset ["pris"] [0]; ?>  ID, "pris", $ _POST ["pris"]); ?>

Igjen, de første par linjene er kroker for å fortelle WordPress når vi vil bruke bestemte funksjoner. Den første linjen sier at når administrasjonspanelet er initialisert, ring funksjonen som vi skrev, admin_init (). Denne funksjonen forteller WordPress å legge til et område som heter "Produktalternativer" til alle innlegg av typen "produkt", og for å bruke funksjonen meta_options () å skrive ut skjemafeltene. Du kan lese mer om add_meta_box her. meta_options () vil da få noen eksisterende eksisterende verdier og skrive ut skjemafeltet. Den andre handlingslinjen sier at når et innlegg er lagret, ring vår funksjon save_price (), som bruker update_post_meta () å legge til eller oppdatere et egendefinert felt kalt "pris".


Egendefinerte kategorier og Rediger kolonner

Vårt siste skritt i å skape en helt tilpasset type er å gi unike navn til sin kategori og redigere kolonnemerker. For det første er det egendefinerte kategorinavnet eller 'taksonomi'.

 register_taxonomy ("katalog", array ("produkt"), array ("hierarkisk" => sant, "label" => "Kataloger", "singular_label" => "Catalog", "rewrite" => true));

Funksjonen vi bruker er register_taxonomy (), som du finner i kodeksen her; den har vært tilgjengelig siden 2.8. Det er i hovedsak si at vi ønsker å opprette en ny kategori type kalt "katalog" som vi vil knytte til "produkt" -typen. Det siste argumentet er en rekke opplysninger som ligner på det vi så register_post_type () funksjon. Når alt er sagt og gjort, vil vi få uttrykket "Katalog" frem under produktmenyen i WordPress admin, og det vil oppføre seg som Postkategorier gjør.

Deretter ønsker vi å opprette et tilpasset sett med kolonner for vår produkttype.

 add_filter ("manage_edit-product_columns", "prod_edit_columns"); add_action ("manage_posts_custom_column", "prod_custom_columns"); funksjon prod_edit_columns ($ kolonner) $ kolonner = array ("cb" => ""," title "=>" Produkttittel "," beskrivelse "=>" Beskrivelse "," pris "=>" Pris "," katalog "=>" Katalog "); return $ kolonner; funksjon prod_custom_columns kolonne) global $ post; switch ($ kolonne) case "description": the_excerpt (); break; case "pris": $ custom = get_post_custom (); echo $ tilpasset ["pris"] [0]; case "katalog": echo get_the_term_list ($ post-> ID, 'katalog', ',', ','); break;

De to første linjene er kroker for å fortelle WordPress at vi vil ha egendefinerte kolonner for typen "produkt". Den første linjen sier at når du skriver ut kolonner for produkttypen, bruk de som er definert i funksjonen prod_edit_columns ().

I prod_edit_columns (), Vi har en nøkkelverdi array hvor nøklene brukes til å referere til visse innleggsinformasjon, som vi definerer i den andre funksjonen, prod_custom_columns (). Verdiene i det arrayet er kolonneoverskriftene. Det kan du merke til prod_edit_columns () lister fem kolonner, men vi beskriver bare skjerminformasjon for tre i prod_custom_columns (). 'cb' og 'tittel' er en del av et sett med standardtaster som WordPress allerede har foreninger for. WordPress vet ikke hva de tre andre er, så det er opp til oss å definere dem.


Lage temalmalen

Ikke så loslitt, ikke sant? Og nå er vi endelig opp til den morsomme delen - temalmalen. For å lage en templatmal for en egendefinert innleggstype, navngir vi bare malens enkeltstående-.php og legg det til vårt tema. I vårt tilfelle vil dette være single-product.php. Her vil jeg vise deg en utdrag av den siden som viser all informasjonen vi har lagt til vår egendefinerte innleggstype:

  ID); $ pris = "$". $ Custom [ "pris"] [0]; ?> 
>

-

Jeg har lagt denne koden til Twentyten-temaet i WordPress 3.0 Beta, da det er det eneste temaet som støtter den nye funksjonaliteten, nemlig menysystemet. Jeg kopierte single.php template, omdøpt det single-product.php og erstattet alt i "content" div med koden ovenfor. For å teste koden min, gikk jeg til Temaer-> Menyer og la vår nye type til sidens navigasjon. Deretter klikket jeg gjennom til vår egendefinerte innleggstype.


Wrapping Up

Som jeg sa tidligere, er WordPress 3.0 fortsatt i beta (du kan få det her); så det er fortsatt noen feil å trene og noen ting kan endres i den endelige versjonen. Det beste du kan gjøre er å komme inn der og spille med noen av de nye funksjonene for å gjøre deg kjent med oppdateringene / endringene. Fra det jeg har sett så langt, ser det bra ut!