Sedan version 2.9 har WordPress introducerat möjligheten att använda anpassade inläggstyper. Nu med version 3.0 tas saker ett steg längre med möjligheten att skapa paneler för dina anpassade inläggstyper. I den här handledningen visar vi hur du implementerar anpassade inläggstyper på din webbplats i din WordPress-webbplats.
Skapa egna inläggstyper – Använda plugins
Från och med version 3.0 har WordPress ingen inbyggd UI (användargränssnitt) för att skapa anpassade inläggstyper. Det finns bara två alternativ som vi kan använda för att skapa anpassade inläggstyper: plugins eller att hårdkoda dem i din temas functions.php-fil. Först, låt oss titta på hur vi kan använda plugins för att skapa anpassade inläggstyper.
Custom Post Type UI

Custom Post Type UI är ett plugin utvecklat av Brad Williams från WebDevStudios som låter dig enkelt skapa anpassade inläggstyper och taxonomier. En av de coolaste funktionerna i detta plugin är att det genererar kod för att skapa anpassade inläggstyper, så att du sedan kan klistra in den i din temas functions.php-fil. En av egenheterna med detta plugin är oförmågan att dela taxonomier mellan alla dina post_types.

Klicka på "Lägg till ny" i panelen Custom Post Type UI.

Därefter får du några alternativ att fylla i. "Post Type Name" är vad WordPress kommer att använda för att hämta alla inlägg av den typen. "Label" är vad som kommer att visas i sidofältet på din instrumentpanel, precis som den vanliga "Post"-menyn. Om du expanderar "View Advanced Options" ser du några fler alternativ som du kan konfigurera. De flesta är självförklarande, som "Public" och "Show UI". Den första, när den är satt till true, tillåter att menyn för anpassad inläggstyp visas i sidofältet, och den andra (show ui), när den är satt till true, genererar menyfönstret.
"Rewrite" är vad som tillåter den anpassade inläggstypen att använda SEO-vänliga WordPress-URL:er (permalänkar). "Custom Rewrite Slug" kan ställas in på vad du vill. WordPress kommer att använda denna slug för att generera permalänkarna. Så om vi har example.com med en anpassad rewrite slug av "movies" skulle din anpassade inläggstyp-permalänk se ut som example.com/movies
WordPress "Query Var"-funktion låter dig fråga din anpassade inläggstyp. Så om vi använde exemplet som gavs tidigare, för att komma åt ett inlägg med titeln, My First Movie Post, som är skrivet under inläggstypen Movies, kan vi ange example.com/?movies=my-first-movie-post. Så frågevariabeln ser ut så här: ?posttypename
Slutligen kan du välja de olika funktioner som stöds av din anpassade inläggstyp, såsom miniatyrer/framhävda bilder och utdrag.

Skapa anpassade inläggstyper – Använda Functions.php-filen

Om du föredrar att använda anpassade inläggstyper utan ett plugin, lägg bara till följande kod i ditt temas functions.php-fil:
// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );
Låt oss dissekera koden.
register_post_type( $post_type, $args ): Denna funktion accepterar två parametrar, $post_type eller namnet på inläggstypen, och $args, en array av argument.
label: Flertalsnamn som ges till inläggstypen, vilket visas i sidofältet i adminpanelen.
public: true/false. Tillåter att admin-gränssnittet fylls med inlägg av denna typ.
show_ui: true/false. Visar eller döljer ett standard-UI för att hantera denna inläggstyp.
capability_type: Standard: post Posttyp som ska användas för att kontrollera läs-, redigerings- och raderingsbehörigheter.
hierarchical: Om inläggstypen är hierarkisk.
rewrite: true/false. Standard: true Om slug-argumentet anges, läggs slug-namnet till före inläggen.
query_var: true/false Ställer in inläggstypens namn som en frågevariabel.
stödjer: Standard: titel och författare Ställer in olika stödfunktioner som inläggstypen tillåter.
Besök WordPress Codex för mer information om register_post_type().
Visa inlägg från egna inläggstyper
För att visa inlägg från din anpassade inläggstyp, lägg till följande kod i loopen. Ersätt “name” med namnet på din inläggstyp. Notera: Du behöver inte lägga till de anpassade inläggstyperna i din index.php-fil. Du kan skapa en anpassad WordPress-sida och köra följande fråga inom loopen.
$query = new WP_Query( 'post_type=name' );
För att visa inlägg från mer än en inläggstyp, ändra ovanstående kod till följande. Ändra movies med namnet på din egna inläggstyp.
$query = new WP_Query( array( 'post_type' => array( 'post', 'movies' ) ) );
Ovanstående kod kommer att visa alla inlägg från den vanliga inläggstypen (post) och från den anpassade inläggstypen, movies.
Det var allt. Vi hoppas att den här handledningen har varit till hjälp och glöm inte att ställa eventuella frågor i kommentarerna.


Gaby Izarra
Ok, jag har lite problem och du kanske kan hjälpa till... här är min Wordpress-forumssida. Jag försöker anpassa en evenemangslista från ett annat tema till det jag använder.
http://wordpress.org/support/topic/php-query-for-custom-post-type-not-displaying-creating-theme-event-list?replies=1#post-5587886
dave
Jag har skapat två anpassade inläggstyper men bara den första visas på min sida. Jag har lagt till detta
$query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
) );
inuti min loop-fil men ingenting. hur kan jag lösa detta?
Jeroen
Vet du hur jag kan lägga till anpassade inläggstyper till bloggarkivsidan och RSS-flödet?
WPBeginner Support
Ja, vi har guider om båda ämnena. Vänligen kolla hur man skapar en arkivsida för anpassade inläggstyper i WordPress, och hur man lägger till anpassade inläggstyper till ditt huvudsakliga WordPress RSS-flöde.
Admin
wizdom networks
För det första, en utmärkt artikel! Jag arbetar med att implementera egna inläggstyper via kod. Värt att notera är att den nuvarande WordPress-dokumentationen (http://codex.wordpress.org/Function_Reference/query_posts) anger att funktionen query_posts generellt inte bör användas och att pre_get_posts-kroken används för att modifiera frågor.
"Det rekommenderas starkt att du använder pre_get_posts-filtret istället och ändrar huvudfrågan genom att kontrollera is_main_query"
Återigen, bra artikel, tack för att du delade med dig.
Hälsningar.
WPBeginner Support
Tack Wisdom, vi har uppdaterat artikeln med WP_Query
Admin
Thom Abbott
WOW... för en nybörjare som använder WP för att driva sin webbplats är detta inte nybörjarmaterial på något sätt! Jag kommer förmodligen att behöva kontakta någon WP-utvecklare för att ställa in min anpassade sida som jag vill ha.
Redaktionell personal
Custom Post Types skapades för utvecklare för att utöka WordPress funktionalitet. Det var aldrig menat för nybörjare.
Admin
mark shirley
query_posts( ‘post_type=movies’);
?>
Jag kan inte få detta att fungera i min twentyeleven child theme page template, var skulle jag placera det för att hämta en sida med filmer. Egentligen är det utdragen jag verkligen vill ha. Tack Mark
muntzdesigns
När du använder detta plugin och lägger till ovanstående kod i loop.php kommer du att förlora kontrollen över kategorier... min anpassade inläggstyp läggs till i alla kategorier... någon hjälp?
wpbeginner
@muntzdesigns Det är därför du har flera loopar... din huvudsakliga bloggloop, archive.php, category.php etc... På en anpassad designad webbplats måste du utnyttja det för att detta ska fungera på rätt sätt.
muntzdesigns
@wpbeginner@muntzdesigns Så lägger jag bara till ovanstående kod i alla filer? (loop.php, archive.php och category.php). Tack.
wpbeginner
@muntzdesigns Nej. Du lägger bara till koden på startsidorna. Problemet du hade var att egna inläggstyper lades till alla kategorier... Du behöver bara lägga till ovanstående kod i huvudloopen. Skapa sedan en ny loop för kategorarkiv, taxonomiarkiv, författararkiv...
PriyaVerma
Fin artikel tack så mycket
dazuaga
Nej, jag hade fel.
dazuaga
Glöm det: %category%/%type%/%postname% Jag tror kommer att fungera.
dazuaga
Vad exakt gör Content Type Identifier i CMS Press-pluginet? Jag letar efter ett sätt att föra in kategorins slug före den anpassade inläggstypen (example.com/category/post_type/postname) men när jag använder %category%/%identifier%/%postname% i Content Type Identifier förvandlas det automatiskt till: %categoryidentifierpostname
murphymakes
Utmärkt information som vanligt. Tack
whimba
I like Custom Post Type UI. It’s light and easy to use but is limited in functionality. So I created my own – http://wordpress.org/extend/plugins/mp-former/. You can try it
simplywendz
Detta är en så bra handledning för att skapa ett anpassat inlägg i WordPress. Stegen ges i detalj och man kan lätt följa dem. Detta är en stor, stor hjälp!
hoss9009
Jag har undrat detta också!!
Cupbearer
Wow, jag fick hela CMS Press-grejen att fungera, men kunde inte lista ut hur jag skulle få den att visas i inläggen. Jag antar att den har funnits så länge att alla bara antar att det redan borde vara känt. Perfekt svar för att få min anpassade inläggstyp att visas i loopen.
Jerry Craig
Cupbearer
Noel Boaz
Tack, det här hjälpte mig mycket att få min anpassade inläggstyp på förstasidan. Bokmärkt, tack.
Ed
Jag har provat pluginet, mycket imponerande. Jag försöker dock få en sidattribut att visas från mina teman 'Sidattribut', dvs. möjligheten att använda ett alternativ för helsidesbredd. Ska jag anta att ditt plugin bara hämtar attribut från inläggstypslayouter snarare än sidtypslayouter? Allt jag vill är att ha möjlighet att ställa in ett inlägg till en hel, förutbestämd mall.
Bra jobbat dock – jag kommer att använda detta mycket.
Skål
Ed
Simon
Jag har provat plugin-metoden men kunde inte få inlägget att visas. Kanske beror det på att jag inte kunde hitta filen loop.php.
Hur som helst, tack så mycket, jag är ganska säker på att det kommer att fungera snart.
Jag vill säga att en superhäftig sak som skulle vara bra att göra med wordpress är att ha möjlighet att skapa anpassade vyer av innehåll precis som i drupal med views-modulen.
Jag vet att det finns ett plugin som heter pods och pods cms som ska göra det möjligt. Kanske du kan be utvecklaren att hjälpa till i ett inlägg på wpbeginner om du inte förstår det alls som jag. Jag är säker på att många skulle älska det. Att presentera vyer är trots allt det som verkligen gör ett cms till ett riktigt dynamiskt cms.
Redaktionell personal
Loop.php kanske inte finns i ditt tema. Loopen kan också hittas i din index.php, archive.php, category.php etc. Du kan också skapa en anpassad loop om du vill.
Admin
Peter
Bra handledning, tack för att du delade med dig.
Jag har en fråga om detta.
Jag skapade en anpassad inläggstyp via functions.php (en kalender) som har en anpassad metaruta i admin-gränssnittet. Denna metaruta använder jQuery på ett fält.(http://jqueryui.com/demos/datepicker/).
För att denna datumväljare ska fungera måste jag bädda in de nödvändiga skripten.
add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
fungerar men mina skript laddas på hela admin-gränssnittet. (vilket stör standard WP admin jquery)
Så vad jag behöver är kroken för min anpassade inläggstyp.
detta:
add_action(‘register_post_type’,’enqueue_my_scripts’);
fungerar inte eftersom register_post_type inte är en krok.
Så, vad är kroken för en anpassad inläggstyp?
Amanda
Du kan prova att lägga till följande i din funktionsdefinition innan du registrerar skriptet:
if(is_admin()) return;Så något i stil med:
function some-function(){
// vi behöver inte detta på adminsidor, så...
if(is_admin()) return;
// registrera det anpassade skriptet
wp_enqueue_script( 'some-script' );
}
Evan
Hur får jag varje innehållstyp att visas i loopen? Jag menar, det är nästan som Tumblr. Om jag lägger upp en bild... Jag måste anpassa koden i loopen – samma sak om jag lägger upp en länk.
Redaktionell personal
Du kan se i inlägget att det finns ett alternativ för att visa både anpassade inläggstyper och inlägg i en enda loop...
Admin
Michael
Jag verkar inte kunna få loopen att fungera för att fråga inlägg av min anpassade typ. Ditt exempel verkar lätt nog så jag provade följande $var = query_posts( ‘post_type=sponsor’);
Sedan startade jag en loop
while ($var ->have_posts()) : $var ->the_post();
Do stuff
endwhile;
detta ger ett php-fel:
Fatal error: Call to a member function have_posts() on a non-object in single-sponsor.php on line 22
rad 22 är raden med while-loopen.
Idéer? Vad gör jag fel?
Romero
Jag har försökt skapa en tagg för anpassat fält, och när jag använder get_the_tags inom loopen av anpassad typ, skriver den inte ut någonting.
Några förslag?
Jan
Jag är väldigt exalterad över den här nya funktionen ^-^ Ni gjorde en fin video. Även om ni i ert exempel, varför använda anpassade inläggstyper och inte bara hitta på en kategori böcker och filmer för inläggen? På så sätt sparar ni allt krångel med en anpassad inläggstyp.
Redaktionell personal
För det första låter det dig organisera saker annorlunda. För det andra kan du ha en helt annan skrivpanel med olika alternativ. Det möjliggör mycket mer anpassning...
Admin
Sandra
Tack för den här fantastiska artikeln! Jag är en riktig nybörjare på wp, och kanske kan du hjälpa mig med den här frågan:
Är det möjligt att visa arkiv för en anpassad inläggstyp i sidofältet, som man kan göra med hjälp av "display archives by cat"-pluginet från kwebble?
Redaktionell personal
Ja, det är möjligt att visa anpassade inläggstyper som arkiv. Skapa bara en anpassad loop i sidofältet för att visa inlägg eller kategorier från en specifik inläggstyp.
Admin
lukeMV
Finns det några lättförståeliga guider om hur man lägger till alternativ till egna inlägg? Till exempel, om en film är drama, komedi, skräck... för att ha de alternativen som kryssrutor INOM redigeringspanelen för egna inlägg? Jag verkar inte kunna hitta en guide eller plugin för det.
Paul
Hej, Det var en jättebra artikel. Jag hoppades att du kanske visste svaret på min fråga.
I de sista par raderna har du:
detta returnerar alla inlägg och inläggstyper som heter filmer.
Vet du hur man returnerar både post_types med namnet 'movies' och inlägg i kategorin 'movies' men exkluderar alla andra inlägg som inte har denna kategori??
Redaktionell personal
Du skulle använda kategoriparametrarna för query_posts – http://codex.wordpress.org/Function_Reference/query_posts
Admin
Walter
Kan du gå ett steg tillbaka: Varför behöver jag anpassade inläggstyper från första början? Vad är användningsfallet?
Redaktionell personal
Anpassade inläggstyper är bra för användare som använder WordPress för mer än en blogg, till exempel CMS. Låt oss säga att du vill ha en webbplats som har din portfölj och din blogg. Uppenbarligen vill du inte att dina bloggar ska se ut på samma sätt som din portfölj. Det är då anpassade inläggstyper kommer till nytta. Detta är en mycket mångsidig funktion för att ta WordPress till nästa nivå. För den genomsnittliga blogganvändaren behöver de förmodligen inte anpassade inläggstyper.
Admin
Tracy B.
Okej, men jag försöker fortfarande förstå skillnaden mellan detta och att bara kategorisera saker. Jag har skapat massor av webbplatser för folk där separata sidor gör saker som att bara lista kategorin "aktuella händelser" och en annan kategorin "projekt" eller vad som helst. Hur är detta bättre?
Redaktionell personal
Detta är bättre när det gäller organisation. Du kan ha anpassad taxonomi, skrivpanel etc. för en specifik inläggstyp.
Chris
Jag kan inte låta bli att tänka att detta skulle ha varit mer användbart om du visade något ovanligt med inläggstyper, snarare än att använda det gamla "filmer och böcker"-exemplet.
Vad sägs om en sidoblogg med inläggstyper, eller något lite mer praktiskt? Allt detta gör är att upprepa vad WP Codex så småningom kommer att ha, om det inte redan finns där.
Redaktionell personal
Vi beklagar att du känner så här Chris. WP Codex kommer inte att ha en video som visar dig hur du gör detta. Det spelar ingen roll vilka namn vi använder för de anpassade inläggstyperna, idén är hur man lägger till dem. Vi kommer inte att skapa en extraordinär webbplats bara för att skriva ett inlägg om anpassade inläggstyper. Om du söker den kunskapen är du förmodligen bättre på att göra det själv. Den här bloggen måste fortfarande uppfylla behoven hos nybörjaranvändare, därav varför vi delade plugin-metoden.
Admin
Kevin Elliott
Kommer detta att fungera på WordPress 2.9 eller är det bara för 3.0?
Jag försökte använda 3.0, men en konstighet inträffade där ingen av mina plugins kunde aktiveras, inte ens de som sa att de aktiverades. Det var väldigt konstigt!
-Kevin
Redaktionell personal
Detta skulle fungera med 3.0, så använd det endast på 3.0. Försök att installera om WordPress 3.0, vi kör några webbplatser på det.
Admin
Marc
Tittade precis på videon...
Är det sant att vi måste redigera php-filer (= hårdkoda) för att få allt att fungera?
Redaktionell personal
Nej, du måste göra det ena eller det andra. I vår video visade vi båda sätten. Antingen kan du göra den hårdkodade vägen, eller plugin-vägen.
Admin
Marc
Allright, I see, thnx!
Då antar jag att du började på det svåra kodningssättet? Vid den tidpunkten, när jag bara såg all kodning, gav jag bara upp. Därför såg jag inte plugin-vägen antar jag...
Rilwis
Mycket fin artikel. Pluginet Custom Post Type UI har alternativ som är mycket lika rå PHP-kod för att registrera inläggstyper, vilket är bra för utvecklare.
Tack för att du introducerar många användbara plugins för att arbeta med egna inläggstyper.
Kaye Media
Bra artikel, ser fram emot Wp3 =)
Bryan
Jag är glad att Wordpress har integrerat anpassade inläggstyper direkt i wp-ramverket. Jag ser dock inte hur det är bättre än att använda befintliga plugins som Magic Fields eller Flutter. Med dessa plugins får du samma effekt plus enkla anpassade fält med många olika typer och flexibilitet i hur du anger och visar dina data. Stöder wp 3.0 något sådant direkt från start?
Redaktionell personal
Du kan skapa ett användargränssnitt för anpassade fält och nästan vad som helst i backend med anpassade inläggstyper. Du har rätt i att dessa plugins gör det väldigt enkelt för användare, men om något av dessa plugins fallerar i utvecklingen, då har du inget annat val.
Admin
Bryan
Rimligt. Jag har lekt lite med betan, men inte så mycket som jag borde antar jag. Det skulle vara spännande om det gick mer i den riktningen. Eftersom jag har blivit erfaren av att använda dessa plugins gör jag nästan ingen webbplats nu utan en.
Så det skulle vara bra om alla dessa verktyg fanns tillgängliga och hanterades inom den ursprungliga applikationen. Jag kan se det leda till bättre backend-hantering och uppmuntra fler människor att bidra till det snarare än en mindre grupp som stöder ett visst plugin.
Ian
Jag tror att de avsiktligt har lämnat en del av koden för anpassade inläggstyper som kod. För att tillåta den genomsnittliga användaren att behöva hantera det.
Abdul Wahid
Detta är en fantastisk artikel
ravalde
Jag kan inte få några taxonomier att visas i twentyeleven, varken kan jag hitta en handledning som visar mig från början till slut, alla verkar fokusera på twentyten och loopen