Pålitliga WordPress-handledningar, när du behöver dem som mest.
Nybörjarguide till WordPress
WPB Cup
25 miljoner+
Webbplatser som använder våra plugins
16+
År av WordPress-erfarenhet
3000+
WordPress-handledningar
av experter

Hur man använder anpassade inläggstyper i WordPress 3.0

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

Anpassade inläggstyper 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.

Generera kod för anpassade inläggstyper

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

Lägg till ny knapp för 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.

Alternativ för anpassade inläggstyper

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

Hårdkoda anpassade inläggstyper

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.

Upplysning: Vårt innehåll stöds av läsarna. Det innebär att om du klickar på några av våra länkar kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt och hur du kan stödja oss. Här är vår redaktionella process.

Det ultimata WordPress-verktyget

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som alla proffs bör ha!

Läsarnas interaktioner

58 CommentsLeave a Reply

  1. 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?

  2. 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.

  3. 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.

  4. 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

  5. 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?

    • @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.

      • @wpbeginner@muntzdesigns Så lägger jag bara till ovanstående kod i alla filer? (loop.php, archive.php och category.php). Tack.

        • @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...

  6. 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

  7. 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!

  8. 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

  9. 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

  10. 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.

  11. 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?

    • 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' );
      }

  12. 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.

  13. 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?

  14. 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?

  15. 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.

  16. 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?

  17. 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.

  18. 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:

    query_posts(array('post_type' => array('post', 'movies')));

    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??

  19. Kan du gå ett steg tillbaka: Varför behöver jag anpassade inläggstyper från första början? Vad är användningsfallet?

    • 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

      • 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?

  20. 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.

    • 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

  21. 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

  22. Tittade precis på videon...

    Är det sant att vi måste redigera php-filer (= hårdkoda) för att få allt att fungera?

      • 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...

  23. 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.

  24. 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?

    • 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

      • 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.

        • 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.

    • 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

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt vår kommentarspolicy, och din e-postadress kommer INTE att publiceras. Använd INTE nyckelord i namn fältet. Låt oss ha en personlig och meningsfull konversation.