WordPress-communityet surrar med spänning över den snart kommande versionen av WordPress 3.0. För närvarande i Beta 2 nu kommer WordPress 3.0 att ha många spännande nya funktioner, till exempel ett nytt standardtema och bättre menyhantering. Kanske mest spännande av dessa funktioner är anpassade posttyper. I denna handledning talar vi om att skapa och använda anpassade posttyper för att skapa ett rockfast tema.
Tja, enligt WordPress Codex:
"Posttyp hänvisar till de olika strukturerade data som bibehålls i WordPress-posttabellen. Anpassade posttyper gör att användare enkelt kan skapa och hantera sådana saker som portföljer, projekt, videobiblioteken, podcaster, citat, chattar och vad som helst en användare eller utvecklare kan föreställa."
I grunden tillåter det oss att utvecklare gör nya typer av inlägg som liknar post och sidtyper, som alla visas i huvudnavigering i WordPress-administratören. Det finns flera fördelar med detta; framförallt behöver vi inte längre pluggar för att skapa speciella typer, vi kan bygga ett tema som bygger mindre på anpassade fält (som vi känner till dem), och de gör hanteringen av webbplatsen enklare för kunder och icke-tekniska användare. I stället för att berätta för dem att skapa ett "inlägg" och se till att fylla i alla typer av anpassade fält för exempelvis musik, kan vi helt enkelt berätta för dem att klicka på "Musik" för att lägga till ett nytt musikpost.
I denna handledning kommer vi att:
Allt detta kommer att göras från vårt temas funktioner.php-fil. Jag ändrar standard 3.0 temat, TwentyTen.
Det första vi ska göra är att berätta för WordPress att vi vill registrera en ny anpassad typ. Här är koden:
add_action ('init', 'product_register'); funktion product_register () $ args = array ('label' => __ ('Produkter'), 'singular_label' => __ ('Produkt'), 'public' => true, 'show_ui' => true, 'capability_type '=>' post ',' hierarkisk '=> false,' rewrite '=> true,' supports '=> array (' titel ',' redaktör ',' miniatyrbild ')); register_post_type ('produkt', $ args);
Den första raden är en krok för att berätta för WordPress att vi vill ringa funktionen product_register ()
under initialisering. Det är i den funktionen att vi registrerar den nya posttypen.
Funktionen register_post_type ()
accepterar två argument: namnet vi vill ge vår posttyp och en lista med argument som används för att skapa den posttypen, som vi lägger in en array som heter $ args
. Du kan läsa exakt vad alla argument är här, men jag vill påpeka de viktiga.
Låt oss lägga till egna anpassade ingångar för vår nya typ. Eftersom vi nu kan skapa nya posttyper kan vi göra de anpassade fälten mer strömlinjeformade för användare som kanske inte är så bekanta med WordPress som vi är. Det är värt att notera här att denna funktionalitet har varit tillgänglig sedan 2.5 och fram till denna punkt har använts främst av pluginutvecklare. Här kommer vi att lägga till ett prisfält.
ID); $ pris = $ anpassat ["pris"] [0]; ?> ID, "pris", $ _POST ["pris"]); ?>
Återigen är de första par raderna krokar för att berätta för WordPress när vi vill använda vissa funktioner. Den första raden säger att när administratörspanelen initialiseras, ring den funktion som vi skrev, admin_init ()
. Den här funktionen säger att WordPress lägger till ett område som heter "Produktalternativ" till alla inlägg av typen "produkt" och att använda funktionen meta_options ()
att skriva ut formulärfälten. Du kan läsa mer om add_meta_box här. meta_options ()
kommer då att få några tidigare existerande anpassade värden och skriva ut formulärfältet. Den andra åtgärdslinjen anger att när en post är sparad, ring vår funktion save_price ()
, vilken använder update_post_meta ()
att lägga till eller uppdatera ett anpassat fält som heter "pris".
Vårt sista steg i att skapa en helt anpassad typ ger unika namn till sin kategori och ändrar kolumnetiketter. För det första är det anpassade kategorinamnet, eller "taxonomi".
register_taxonomy ("katalog", array ("produkt"), array ("hierarkisk" => true, "label" => "Kataloger", "singular_label" => "Catalog", "rewrite" => true));
Funktionen vi använder är register_taxonomy ()
, som du hittar i codex här; Det har varit tillgängligt sedan 2.8. Det sägs i huvudsak att vi vill skapa en ny kategori typ som heter "katalog" som vi kommer att associera med "produkt" -typen. Det sista argumentet är en mängd information som liknar vad vi såg register_post_type ()
fungera. När allt är sagt och gjort kommer vi att få termen "Katalog" under vår produktmeny i WordPress-administratören och det kommer att verka som postkategorier gör.
Därefter vill vi skapa en anpassad uppsättning kolumner för vår produkttyp.
add_filter ("manage_edit-product_columns", "prod_edit_columns"); add_action ("manage_posts_custom_column", "prod_custom_columns"); funktion prod_edit_columns ($ kolumner) $ kolumner = array ("cb" => ""," title "=>" Produkttitel "," beskrivning "=>" Beskrivning "," pris "=>" Pris "," katalog "=>" Katalog "); returnera $ kolumner; funktion prod_custom_columns kolumn) global $ post; switch ($ kolumn) case "description": the_excerpt (); break; case "pris": $ custom = get_post_custom (); echo $ custom ["pris"] [0]; fall "katalog": echo get_the_term_list ($ post-> ID, 'katalog', ',', ','); break;
De två första raderna är krokar för att berätta för WordPress att vi vill ha anpassade kolumner för typen "produkt". Den första raden säger att när du skriver ut kolumner för produkttypen, använd de som definieras i funktionen prod_edit_columns ()
.
I prod_edit_columns ()
, Vi har en nyckelvärdesuppsättning där tangenterna används för att referera till viss postinformation, som vi definierar i den andra funktionen, prod_custom_columns ()
. Värdena i den arrayen är kolumnrubrikerna. Det märker du kanske prod_edit_columns ()
listar fem kolumner, men vi beskriver bara visningsinformation för tre in prod_custom_columns ()
. 'cb' och 'title' är en del av en uppsättning standardnycklar som WordPress redan har föreningar för. WordPress vet inte vad de tre andra är, så det är upp till oss att definiera dem.
Inte för lurvigt, eller hur? Och nu är vi äntligen upp till den roliga delen - temalmallen. För att skapa en templatschema för en anpassad posttyp, namnger vi bara mallen singel-
ID); $ pris = "$". $ Anpassade [ "pris"] [0]; ?>>- =$price?>
Jag har lagt till den här koden i Twentyten-temat i WordPress 3.0 Beta, eftersom det är det enda temat som stöder den nya funktionaliteten, nämligen menysystemet. Jag kopierade single.php-mallen, bytt namn på den single-product.php och ersatte allt i "content" div med koden ovan. För att testa min kod gick jag till Teman-> Menyer och lade till vår nya typ på min webbplatss navigering. Sedan klickade jag till vår anpassade posttyp.
Avslutar
Som jag sa tidigare är WordPress 3.0 fortfarande i beta (du kan hämta det här); så det finns fortfarande några buggar att träna och vissa saker kan förändras i den slutliga versionen. Det bästa du kan göra är att komma in där och spela med några av de nya funktionerna för att bekanta dig med uppdateringarna / ändringarna. Från vad jag har sett hittills ser sakerna ganska bra ut!