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.
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.
I denne opplæringen vil vi:
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.
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".
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.
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-
ID); $ pris = "$". $ Custom [ "pris"] [0]; ?>>- =$price?>
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!