Anpassade WordPress-inläggstyper är kraftfulla funktioner. De är det som lyfter WordPress från ett ödmjukt bloggverktyg till ett innehållshanteringssystem och ger dig den viktiga flexibiliteten du behöver för att skapa en skräddarsydd webbplats.

Men de kan orsaka förvirring: vad exakt är anpassade WordPress-inläggstyper? Hur skiljer de sig från vanliga inlägg och sidor? Hur skapar du dem? Och när du har skapat en anpassad inläggstyp, hur lägger du till något på den, visar den på din webbplats och hur lagras den av WordPress?

I den här artikeln visar jag dig exakt hur anpassade WordPress-inläggstyper fungerar. Jag ska jämföra dem med de inläggstyper som du kanske är mer bekant med, lära dig hur du skapar dem och visa dig hur du använder temamallar för att visa dem på din webbplats.

Specifikt kommer jag att ta upp:

Så låt oss sätta igång!

Vad är Anpassade inläggstyper i WordPress?

Det är förmodligen lättare att förklara vad anpassade inläggstyper i WordPress är genom att förklara ett bredare koncept: inläggstyper.

Inläggstyper är sätt att kategorisera olika typer av innehåll i WordPress. Jag antar att du redan är bekant med de två vanligaste inläggstyperna: inlägg och sidor. Men vad du kanske inte vet är att WordPress också kommer med några andra inläggstyper.

Inläggstyper som levereras med WordPress

WordPress levereras med sju inläggstyper:

  • Inlägg
  • Sidor
  • Bilagor
  • Revideringar
  • Navigeringsmenyer
  • Anpassad CSS
  • Ändringsanvisningar

Du kanske aldrig har hört talas om ändringsanvisningar och du kanske använder anpassad CSS på din webbplats, men det har inte slagit dig att dessa kan vara inläggstyper.

För de flesta WordPress-användare och utvecklare är de enda inläggstyperna du behöver oroa dig för de första fem: inlägg, sidor, bilagor, revideringar och navigeringsmenyer.

Låt oss ta en titt på var och en av dessa inläggstyper så att vi kan förstå mer om dem.

WordPress-inläggstyper: Inlägg

”Inlägget” är inläggstypen du kommer att använda mest i WordPress. Inlägg är dynamiskt innehåll: utformat för att uppdateras regelbundet. Du kan lägga till kategorier och taggar till dem, vilket innebär att de kommer att visas i flera arkivsidor, och de kommer också att dyka upp på din hemsida eller din bloggsida. Vanligtvis kommer dina inlägg att utgöra huvuddelen av innehållet på din webbplats.

Observera: I WordPress betyder det engelska ordet för inlägg, ”post”, två saker. I databasen är en post vilken inläggstyp som helst, så det kommer att innehålla sidor, bilagor och allt annat. Men annars menar vi det vi översätter till ”inlägg”, det vill säga inläggen i vår blogg, som tillhör inläggstypen ”inlägg”.

WordPress-inläggstyper: Sidor

Om du redan har en WordPress-webbplats är sidor den andra innehållstypen du kommer vara bekant med. De är statiskt innehåll, utformade för att behållas längre än inlägg och att ge information om olika typer av saker som inte förändras lika ofta. Ett bra exempel är dina kontaktuppgifter eller sidan ”Om oss” på en företagswebbplats.

Sidor kan inte ha kategorier eller taggar och är inte utformade för att visas på arkivsidor. Istället kommer besökarna att komma åt dem via navigeringsmenyn.

Observera: På internetspråk kan en sida betyda alla former av sidor på din webbplats. När internet först utvecklades bestod det enbart av statiskt innehåll som behövde kodas direkt genom att skriva HTML. Så en ”webbsida” kan vara alla sorters sidor på din webbplats, inklusive en statisk sida i WordPress-termer, ett arkivsida, eller ett inlägg. I den här artikeln, när jag hänvisar till sidor, menar jag vad sida innebär i WordPress-termer, dvs en statisk sida. Ibland hänvisar jag till arkivsidor, men de är inte sidor i den meningen att du skapar en sida för att lagra dem. WordPress gör det åt dig.

WordPress-inläggstyper: Bilagor

En bilaga är ett medieobjekt som har laddats upp till din webbplats. I WordPress-databasen är detta inte mediefilen själv, utan dess data. Så, varje bilaga kommer att ha ett unikt ID och metadata såsom titel, beskrivning, ALT-text, och mer.

Varje bilaga har också sin egen bilagesida med en unik URL. Du kan hitta webbadressen för denna via mediaredigeringsskärmen för den bilagan:

Bilage-redigeringsskärmen i WordPress
Bilage-redigeringsskärmen i WordPress

Bilagor kan vara alla möjliga former av uppladdningar: bilder, videor, PDF-filer, och mer. Du kan komma åt och redigera dem via Media-objektet i WordPress-adminmenyn, eller du kan ladda upp dem direkt till inlägg/sidor när du redigerar dem. Alla bilagor som du laddar upp till ett inlägg kommer sedan att vara tillgängliga för att redigera och visa via Mediamenyn.

WordPress-inläggstyper: Revideringar

Nu går vi vidare till de lite mer obskyra inläggstyperna.

Varje gång du sparar en ny version av ett inlägg, en sida, en bilaga eller en anpassad inläggstyp, kommer WordPress att skapa en revidering för att återspegla den versionen av inlägget (eller sidan etc.).

Du kan visa revideringarna för ett inlägg eller en sida på din webbplats genom att gå till dess relevanta redigeringsskärm och öppna fliken Dokument på höger sida. Här ser du ett meddelande som talar om hur många revideringar det här inlägget har. Nedan kan du se en skärmdump av ett inlägg jag redigerar som för närvarande har fem revideringar.

Revideringar i WordPress-inläggsredigeringsskärmen
Revideringar i WordPress-inläggsredigeringsskärmen

Om du inte använder Gutenberg-redigeraren kan du komma åt revideringar genom att skrolla längst ner på redigeringsskärmen och hitta en lista över dem här:

Revideringar i den klassiska WordPress-inläggsredigeringsskärmen
Revideringar i den klassiska WordPress-inläggsredigeringsskärmen

Om du klickar på rutan Revideringar kommer du att tas till en skärm som visar dina senaste två versioner av ditt inlägg. Härifrån kan du granska revideringarna och återgå till en tidigare version av inlägget.

WordPress kommer att skapa en hel del revideringar för din webbplats över tid, vilket innebär att databasen kommer att vara full av dem (här är Kinstas guide om hur man hanterar revideringar för snabbare prestanda)! Men revideringar är en inläggstyp precis som alla andra, och de lagras på samma sätt – mer om det inom kort.

WordPress-inläggstyper: Navigeringsmenyer

Navigeringsmenyer, eller mer exakt, objekten i navigeringsmenyerna, är också en inläggstyp.

Varje objekt i navigeringsmenyn lagras som ett objekt i databasen. Tack vare dess metadata vet WordPress att det här är ett navigeringsmenyobjekt, exakt var i navigeringsmenyn det ska visas och var det länkar till.

Du kan inte redigera navigeringsmenyobjekt på samma sätt som andra inläggstyper. Istället redigerar du dem via Customizer eller Meny-skärmen.

WordPress-inläggstyper: Anpassad CSS

Om du lägger till anpassad CSS via Customizer sparas ditt arbete med den här anpassade inläggstypen. Ett nytt inlägg (av inläggstypen ”custom CSS”) sparas för anpassad CSS för varje tema på din webbplats, och WordPress kommer bara att använda som är sparad för det aktuella aktiva temat.

WordPress-inläggstyper: Ändringsanvisningar

Ändringsanvisningar är lite som revideringar, men istället för att gälla för inlägg gäller de för Customizer. När du gör en ändring med hjälp av Customizer, kommer det att sparas som en ändringsanvisning, på ett liknande sätt som ett utkast.

Nu när vi har gått igenom hela spektrumet av WordPress inläggstyper, låt oss gå vidare för att ta reda på mer om anpassade WordPress-inläggstyper.

Skillnaden mellan ett inlägg och en anpassad inläggstyp

Låt oss sammanfatta snabbt: ett inlägg/post kan vara en av två saker.

En inläggstyp är en typ av inlägg (i vidare bemärkelse) som ett visst innehåll hör till. Och ett ”inlägg” är en inläggstyp, precis som ”sida”, ”bilaga” eller någon anpassad inläggstyp du registrerar (jag vet, det är förvirrande, men jag går in mer på detta snart).

Å andra sidan är din anpassade inläggstyp inte en typ av ”inlägg” i betydelsen av ett blogginlägg. Det är en typ av post i betydelsen av alla poster (alla inläggstyper) som lagras i databasen.

Anpassade WordPress-inläggstyper: Vanliga Användningsområden

Så nu vet vi vad en anpassad inläggstyp är. Men när kan du behöva använda en? När du vill lägga till innehåll på din webbplats som inte passar in i en av de inbyggda inläggstyperna.

Några vanliga exempel på anpassade inläggstyper är:

Dessa är några av de vanligaste användningsområden, men de är ingalunda de enda. Mitt råd när du bestämmer om du ska använda en anpassad inläggstyp för någon ny typ av innehåll är att fråga dig själv detta:

Vill jag visa mitt nya innehåll på huvudbloggsidan eller som en statisk sida, eller vill jag kunna visa det på en separat arkivsida?

I vissa fall, kan en kategori för att skilja ut ditt nya innehåll vara tillräckligt: kanske driver du en blogg och vill inkludera fallstudier som du kan visa på en egen sida (genom att använda en ”fallstudie”-kategori som du skapar) och även visa i huvudbloggen. Men om du vill hålla ditt nya innehåll separat från dina blogginlägg, då är det vettigt att skapa en anpassad inläggstyp för det.

Hur inläggstyper lagras av WordPress

Inlägg av en anpassad inläggstyp lagras på samma sätt som vanliga inlägg (och sidor etc.) lagras. Låt oss ta en titt på detta mer i detalj.

Din WordPress-webbplats har ett antal databastabeller för att lagra innehåll och inställningar. Det minsta antalet tabeller är 12, men din webbplats kan ha fler om den driver ett Multisite-nätverk eller om du har ett plugin installerat som lägger till fler tabeller.

WordPress databastabeller
WordPress databastabeller

I skärmdumpen ovan kan du se att det finns två tabeller som ser ut som om de kanske har något att göra med inlägg: wp_posts och wp_postmeta.

Tabellen wp_posts lagrar allt innehåll i dina inlägg, av alla inläggstyper. Så det spelar ingen roll om vi pratar om ett blogginlägg, en sida, en revidering, en bilaga eller en anpassad inläggstyp: de kommer alla att lagras i wp_posts-tabellen.

WordPress vet vilken inläggstyp varje inlägg är eftersom det kommer att ha ett värde i post_type-fältet i wp_posts-tabellen. Det värdet motsvarar namnet på inläggstypen. Så när du lägger till ett nytt blogginlägg kommer WordPress att lägga till ett inlägg i wp_posts-tabellen, med post_type ”inlägg”. Och om du registrerar en anpassad inläggstyp som heter ”produkt”, till exempel, kommer varje ny produkt du skapar att generera en rad i wp_posts-tabellen med ”produkt” som värdet i post_type-fältet.

Wp_postmeta-tabellen är till för att lagra metadata om dina inlägg. Den har fyra fält:

  • meta_id: det här objektets ID i wp_postmeta-tabellen.
  • post_id: inlägget som denna metadatapost motsvarar. Ett inlägg kan ha flera rader i wp_postmeta-tabellen.
  • meta_key: nyckeln för just denna typ av metadata. För en statisk sida kan till exempel en potentiell nyckel vara page_template, vilket skulle hänvisa till vilken sidmall som används.
  • meta_value: värdet för fältet. Om en sida (för att använda det här exemplet igen) använder standardsidmallen, skulle meta_value här vara ”standard”.

Så de typer av metadata som lagras för ett visst inlägg kommer att vara olika beroende på vilken typ av inläggstyp det är.

Du behöver inte oroa dig för vilka data som lagras i wp_posts och vilka som lagras i wp_postmeta: men det är bra att förstå att alla inläggstyper lagras på samma plats, eftersom det betyder att WordPress kan arbeta med dem alla på ungefär samma sätt.

Hur Anpassade inläggstyper interagerar med Anpassade Taxonomier och Anpassade Fält

Innan vi går vidare till att titta på hur du skulle registrera en anpassad inläggstyp i WordPress, låt oss identifiera hur en anpassad inläggstyp kommer att interagera med andra anpassade innehållstyper, nämligen anpassade taxonomier och anpassade fält.

Anpassade Taxonomier

Taxonomier i WordPress används för att kategorisera inlägg av vilken inläggstyp som helst. För vanliga inlägg är de två taxonomierna som används kategorier och taggar.

När du registrerar din anpassade inläggstyp kan du välja att tilldela en befintlig taxonomi eller taxonomier till den. Du kan lägga till ”kategori”-taxonomin till den när du registrerar taxonomin. Jag ska visa dig hur du gör det inom kort när jag visar tekniken för att skapa en anpassad inläggstyp.

Alternativt kan du skapa helt nya taxonomier för din anpassade inläggstyp, vilket också är ett vanligt tillvägagångssätt.

Så, till exempel, om du skapar en ”produkt”-inläggstyp för en e-handelsplats, kan du skapa en ”avdelning”-taxonomi att sortera dina produkter i avdelningar i din butik.

Om du skapar en ”event” inläggstyp, kan du skapa en taxonomi för ”eventtyp”, som kan ange om detta är en konsert, en poesiläsning, eller en standup-kväll.

Taxonomierna du skapar är upp till dig och beror på hur du vill sortera och visa dina inlägg från din anpassade inläggstyp.

Anpassade fält

En annan anpassad innehållstyp du har i WordPress är anpassade fält, även känd som inläggs-metadata. Anpassade fält är ytterligare metadata som du kan lägga till i ett inlägg så länge inläggstypen stöder dem. När du registrerar en anpassad inläggstyp kan du inkludera anpassat fältstöd med den här raden:

supports => array( 'custom-fields' );

Detta skickas som en matris så att du kan lägga till stöd för flera alternativ.

Så om du vill lägga till metadata till din anpassade inläggstyp, till exempel storlekar eller färger i en klädaffär med inläggstypen ”produkt”, skulle du använda ett anpassat fält för att göra detta.

Anpassade fält skiljer sig från anpassade taxonomier eftersom du inte skulle använda dem för att mata ut en arkivsida.

Här är ett exempel på en klädaffär. Du kan ha en arkivsida för varje exempel på en ”avdelning”-taxonomi, t. ex. ”Kvinnor”, ”Män” etc. Tänk dig att du också har ett anpassat fält som heter ”Storlek”. Du skulle inte skapa en arkivsida för varje storlek, eftersom det inte är något dina kunder förväntar sig att se.

Följ denna regel för att hjälpa dig att avgöra om du behöver använda en anpassad taxonomi eller ett anpassat fält för att lägga till mer data i ditt inlägg: måste du visa det på en arkivsida?

Jag ska visa dig hur du skapar arkivsidor för din anpassade inläggstyp och anpassade taxonomier senare.

Så här lägger du till en anpassad inläggstyp med ett Plugin

Så nu vet du vad anpassade inläggstyper är och du vet att du behöver en för din webbplats: Hur lägger du till den?

Det finns två sätt: genom att använda ett plugin, och genom att koda det manuellt. Låt oss börja med plugin-sättet.

Det finns två typer av plugins som du kan använda för att registrera en anpassad inläggstyp: den första kommer att registrera en anpassad inläggstyp för att lägga till de funktioner som följer med pluginet, och den andra kommer att ge dig ett gränssnitt som du kan använda för att skapa din egen inläggstyp.

Det första exemplet innehåller en mängd olika plugins inklusive e-handelsplugins, evenemangsplugins, och mer. Låt oss börja med ett av de mest populära WordPresspluginsen, WooCommerce.

Så här använder du WooCommerce för att registrera anpassade inläggstyper

WooCommerce är ett exempel på ett plugin som använder en anpassad inläggstyp för att fungera. I det här fallet är det ”produkt”-inläggstypen.

Produkter listade i WooCommerce
Produkter listade i WooCommerce

WooCommerce registrerar också vissa anpassade taxonomier och anpassade fält så att du kan organisera din butik, inklusive produktkategorier och produktetiketter. Dessa skiljer sig från de kategorier och taggar du skulle använda för dina blogginlägg.

Så här använder du pluginet Events Calendar för att registrera anpassade inläggstyper

Pluginet Events Calendar är ett annat plugin som använder en anpassad inläggstyp. I det här fallet är det inläggstypen ”event”.

Evenemang skapade av Events Calendar-pluginet
Evenemang skapade av Events Calendar-pluginet

Pluginet lägger till en taxonomi som är unik för event: ”eventkategori”. Det lägger till vanliga taggar till event också, så att du kan använda samma taggar som du använder för dina blogginlägg.

Så här använder du WP Google Maps för att registrera anpassade inläggstyper

Precis som WooCommerce och The Event Calendar är WP Google Maps ett plugin för WordPress-kartor som registrerar en anpassad inläggstyp för dina kartor.

En karta som skapats av pluginet WP Google Maps
En karta som skapats av pluginet WP Google Maps

Inläggstypen ”Karta” fungerar annorlunda från den inläggstyperna produkt eller event i de tidigare pluginsen eftersom du inte skulle visa en arkivsida av alla dina kartor: i stället, ger pluginet dig en kortkod för varje karta du skapar, som du bäddar in i ett inlägg eller sida på din webbplats. Men även om du inte kan visa kartor på samma sätt som du skulle några andra inläggstyper, är det fortfarande en inläggstyp.

Hur du använder pluginet Custom Post Type UI

Om du vill registrera din egen anpassade inläggstyp i stället för en som är en del av den bredare funktionalitet som tillhandahålls av ett plugin som WooCommerce, kan du använda ett plugin som ger dig ett gränssnitt för att göra det enkelt att registrera en anpassad inläggstyp.

Ett sådant plugin är Custom Post Type UI.

Custom Post Type UI-pluginet
Custom Post Type UI-pluginet

Med detta plugin kan du registrera dina anpassade inläggstyper med hjälp av admin-skärmar, utan att behöva skriva någon kod.

Det ger dig en uppsättning skärmar som låter dig lägga till alla element som krävs för att registrera en inläggstyp som du kan lägga till när du använder funktionen register_post_type(). För att lägga till en ny inläggstyp med pluginet, gå till CPT IU > Lägg till/redigera inläggstyper.

Lägg till en inläggstyp med pluginet Custom Post Type UI.
Lägg till en inläggstyp med pluginet Custom Post Type UI.

Härifrån kan du lägga till en ny inläggstyp eller redigera befintliga som du har registrerat.

Du kan redigera inställningarna för inläggstypen eller använda standardinställningarna. Du kan hitta fullständig dokumentation om alla inställningar och alternativ för en inläggstyp i WordPress Codex.

Inställningar för Custom Post Type UI-pluginet
Inställningar för Custom Post Type UI-pluginet

Du kan också använda pluginet för att registrera en anpassad taxonomi och tilldela det till din nya inläggstyp eller till någon befintlig inläggstyp. Och när du använder pluginet för att registrera en inläggstyp, kan du tilldela alla befintliga taxonomier till det samtidigt.

Hur du använder pluginet Pods för att registrera anpassade inläggstyper

Pluginet Pods är ett annat plugin som ger dig ett gränssnitt för att låta dig registrera en anpassad inläggstyp utan att skriva kod.

Pods låter dig också utöka dina befintliga inläggstyper. Så du kan lägga till extra fält till en befintlig inläggstyp eller taxonomi och redigera deras inställningar.

Skapa inläggstyper med pluginet Pods
Skapa inläggstyper med pluginet Pods

Pods använder en inläggstyp (’pod’) för att lagra alla dina anpassningar, och låter dig också registrera dina anpassade inläggstyper likt Custom Post Type UI, men med ett gränssnitt som är utformat för att hjälpa dig genom hela processen. Detta innebär att pluginet kan göra processen enklare, men det lägger till mycket mer kod till din webbplats (och data till din databas) än om du kodade inläggstypen själv.

Om du inte vill installera ett plugin för att hantera processen med att registrera din inläggstyp, kan du istället koda det själv.

Så här registrerar du din egen anpassade inläggstyp i WordPress

Om du är bekväm med att skriva kod, kan du använda funktionen register_post_type() för att registrera din anpassade inläggstyp. Detta är det mest effektiva sättet att göra det.

Bästa praxis talar om för oss att lägga in kod för en anpassad inläggstyp i ett plugin, snarare än i ditt tema. Detta beror på att om du skulle ändra ditt tema i framtiden, vill du inte förlora inläggstypen och alla inlägg du har skapat med den inläggstypen. Det betyder också att om du uppdaterar ditt tema i framtiden kommer du inte att förlora din inläggstyp.

Låt oss gå igenom stegen för att registrera din egen anpassade inläggstyp i WordPress.

Skapa ditt plugin

Det första steget är att skapa ditt plugin. I wp-content/plugins-mappen på din utvecklings- eller staging-webbplats (inte din live-webbplats ännu), lägg till en mapp för ditt plugin. I den mappen, lägg till en PHP-fil. Jag anropar min kinsta-register-posttype.php.

Tips: Jag föredrar att skapa ett plugin i en mapp istället för att bara lägga till en plugin-fil till mappen wp-content/plugins. På så sätt, om jag behöver lägga till fler filer till mitt plugin, till exempel inkludera filer, skript eller stilar, har jag redan en mapp att förvara dem i.

I din nya php-fil, lägg till den inledande utkommenterade texten för ditt plugin:

<?php
/*
Plugin Name: Register Custom Post Types
Plugin URI: http://rachelmccollin.com
Description: Plugin to register the book post type
Version: 1.0
Author: Rachel McCollin
Author URI:http://rachelmccollin.com
Textdomain: kinsta
License: GPLv2
*/

Detta berättar viktig information om pluginet för WordPress (och användaren):

  • Vad det heter
  • Var kan du hitta mer information
  • Vad det gör
  • Versionsnummer
  • Vem utvecklade det, och var du kan ta reda på mer om dem
  • Textdomänen för internationalisering
  • Licensen, som alltid ska vara GPL.

Så ditt plugin är nu konfigurerat och om du vill kan du aktivera det i admin-skärmarna. Det kommer dock inte att göra något ännu om du gör det.

Ställa in funktionen för din inläggstyp

Låt oss nu börja skapa funktionen för att registrera din inläggstyp. I mitt exempel kommer jag att skapa en inläggstyp som heter ”bok”, eftersom det här är till en påhittad bokrecensionssajt. Vad du använder kommer uppenbarligen att vara annorlunda och beror på vad du använder din anpassade inläggstyp för.

Under den utkommenterade texten lägger du till det här:

function kinsta_register_post_type() {

}
add_action( 'init', 'kinsta_register_post_type' );

Den här funktionen innehåller all kod för din anpassade inläggstyp. Du kanske vill ändra dess namn för att lägga till ett eget prefix istället för kinsta_. Det är bra att använda ett prefix på alla dina funktioner så att det inte krockar med namnet på någon funktion som tillhandahålls av ditt tema eller de andra pluginsen som du använder.

Resten av koden kommer att läggas in i parenteserna för den funktionen.

Att definiera etiketterna för din anpassade inläggstyp

Nu är det dags att definiera etiketterna för din anpassade inläggstyp. Mellan klammerparenteserna lägger du till detta:

$labels = array(
 'name' => __( ‘Books’, ‘kinsta’ ),
 'singular_name' => __( 'Book', ‘kinsta’ ),
 'add_new' => __( 'New Book', ‘kinsta’ ),
 'add_new_item' => __( 'Add New Book', ‘kinsta’ ),
 'edit_item' => __( 'Edit Book', ‘kinsta’ ),
 'new_item' => __( 'New Book', ‘kinsta’ ),
 'view_item' => __( 'View Books', ‘kinsta’ ),
 'search_items' => __( 'Search Books', ‘kinsta’ ),
 'not_found' =>  __( 'No Books Found', ‘kinsta’ ),
 'not_found_in_trash' => __( 'No Books found in Trash', ‘kinsta’ ),
);

Du måste ändra om din anpassade inläggstyp inte är ”bok”. Det finns fler etiketter du kan använda, men jag tycker att de ovan är tillräckliga för mina behov.

Observera att jag använder internationalisering i mina etiketter så att de kommer att översättas till det lokala språket för användare.

Att definiera argumenten för din anpassade inläggstyp

Nästa steg är att definiera argumenten, varav ett kommer att vara den uppsättning etiketter som vi redan har lagt till.

Under etiketterna och fortfarande inuti dessa parenteser, lägg till detta:

$args = array(
 'labels' => $labels,
 'has_archive' => true,
 'public' => true,
 'hierarchical' => false,
 'supports' => array(
  'title',
  'editor',
  'excerpt',
  'custom-fields',
  'thumbnail',
  'page-attributes'
 ),
 'taxonomies' => 'category',
 'rewrite'   => array( 'slug' => 'book' ),
 ‘show_in_rest’ => true
);

Låt oss ta en titt på vad alla dessa gör.

  • Etikettargumentet är den uppsättning etiketter som vi redan har definierat.
  • 'has_archive' => true aktiverar ett inläggstyparkiv för den anpassade inläggstypen. Det här är falskt som standard så jag vill ändra detta och ge mig själv möjlighet att använda ett inläggstyparkiv (som jag visar dig hur du använder inom kort).
  • 'public' => true gör att inläggstypen kan inkluderas i sökresultaten och i anpassade förfrågningar. Återigen är standard inställt å falskt och det här är något jag vill ändra.
  • Värdet ’hierarchical’ beror på hur du vill använda din anpassade inläggstyp. Om du ställer in detta till sant, kommer inläggstypen att bete sig som sidor, med en möjlig hierarki och överordnade och underordnade inlägg för alla inlägg av din inläggstyp. Om du ställer in det på falskt, kommer det att bete sig som inlägg, utan en hierarki.
  • Fältet ’support’ definierar ett antal funktioner i inläggstyper som du kan låta den här inläggstypen stödja. Jag vill se till att funktioner som utvalda bilder och anpassade fält är påslagna.
  • Argumentet ’taxonomies’ definierar de befintliga taxonomierna som gäller för denna inläggstyp. Här använder jag ’category’-taxonomin, kategorier. Om du vill använda en anpassad taxonomi istället och inte har registrerat den ännu, hoppa bara över den här raden och registrera sedan taxonomin till inläggstypen. Om du redan har registrerat en anpassad taxonomi kan du lägga till den i inlägget med den här raden.
  • Jag använder argumentet ’rewrite’ eftersom jag kommer att ge taxonomin ett namn som skiljer sig från vad jag vill använda som dess slug. Jag ska förklara detta mer detaljerat inom kort.
  • 'show_in_rest' = > true säkerställer att inläggstypen är tillgänglig för REST API och Gutenberg-gränssnittet. Det är som standard falskt vilket inte passar mig alls – jag vill att alla mina inläggstyper ska använda samma redigeringsgränssnitt!

Så det är alla argument. Men vi har inte faktiskt registrerat inläggstypen än. Dags att fixa det.

Att lägga till funktionen register_post_type()

Det sista steget är att föra ihop allt detta i register_post_type()-funktionen.

Under dina argument, och fortfarande inuti parenteserna, lägg till det här:

register_post_type( ‘kinsta_book', $args );

Detta registrerar inläggstypen ”kinsta_book”, med de argument vi redan har definierat.

Nu kanske du tycker att det är lättare att förstå varför jag använde argumentet ’rewrite’ tidigare. Jag gillar att lägga till ett prefix till namnen på mina inläggstyper, så jag kan vara säker på att de inte kommer att krocka med några inläggstyper som läggs till av något tredje parts plugin, men jag vill inte att prefixet ska vara offentligt.

Som standard, när WordPress visar ett exempel på din inläggstyp, kommer det att använda inläggstypens namn i webbadressen. Så min bok som heter ”min underbara bok” skulle ha webbadressen mysite.com/kinsta_book/min-underbara-bok. Jag vill inte det, så jag använder ’rewrite’-argumentet för att ändra webbadressen till mysite.com/book/min-underbara-bok. Ser mycket bättre ut, eller hur?

Spara nu din fil och aktivera ditt plugin i WordPress-adminpanelen. Du kommer att upptäcka att en ny inläggstyp har dykt upp i admin-menyn.

Inläggstypen "böcker" på administratörsskärmarna
Inläggstypen ”böcker” på administratörsskärmarna

Inläggstypen är nu registrerad och redo för dig att använda på din webbplats. Ta dig tid att lägga till några inlägg till det (kom ihåg att det ska vara inlägg av din anpassade inläggstyp, inte blogginlägg – WordPress kan vara förvirrande ibland!) och sedan kikar vi på hur du kan visa dina inlägg från din anpassade inläggstyp i frontenden av din webbplats.

Så här visar du anpassade WordPress-inläggstyper på din webbplats

De flesta anpassade inläggstyper som du lägger till på din webbplats fungerar som inlägg, vilket innebär att de är gjorda för att visas i arkivsidor. Kanske använder du en anpassad taxonomi för att visa dem, eller kanske har du lagt till en ”kategori”-taxonomi som jag gjorde.

Alternativt, om du har använt ett plugin som WooCommerce som lägger till egna inläggstyper för att lägga till specifika funktioner på din webbplats, då kan det pluginet lägga till några specifika sidor (som ”Shop2 page”) utformad för att visa din anpassade inläggstyp.

De fyra alternativen du har för att visa anpassade inläggstyper är:

  • Visa det enskilda inlägget (dvs. boken, i mitt exempel)
  • Visa hela inläggstyparkivet, med alla böckerna listade.
  • Visa ett anpassat taxonomiarkiv med hjälp av en taxonomi som du har registrerat för din anpassade inläggstyp.
  • Integrera inlägg från den anpassade inläggstypen (t.ex. böcker) i arkivet för en befintlig taxonomi som ”kategori” eller på huvudbloggsidan.

Låt oss ta en titt på var och en av dessa.

Varning! Om du vid något tillfälle i denna process inte kan komma åt arkiv eller enskilda inlägg för din anpassade inläggstyp, är det för att WordPress ännu inte har skrivit permalänkar för dem. För att reparera detta, gå till Inställningar > Permalänkar och klicka bara på knappen Spara ändringar. Detta kommer att tala om för WordPress att söka efter nya inläggstyper och skapa webbadresser för dem.

Visa Inläggstyparkivet

Det första alternativet du har är att skapa en arkivsida för alla inlägg i ditt anpassade inläggstyparkiv.

Om du definierade ”has_archive” som sant när du registrerade inläggstypen, kommer WordPress automatiskt att generera en arkivsida för din inläggstyp. Du kan lägga till detta i navigeringsmenyn med hjälp av Customizer.

Att lägga till inläggstyparkivet i menyn

Öppna Customizer och välj Meny-alternativet. Välj din huvudmeny och klicka på knappen Lägg till objekt för att lägga till extra objekt i din meny.

Lägga till ett menyalternativ i WordPress customizer
Lägga till ett menyalternativ i WordPress customizer

Välj din inläggstyp från de alternativ som visas och klicka på nedåtpilen till höger om dess namn. Detta kommer att visa en lista som innehåller vart och ett av de inlägg du har lagt till, plus ett alternativ som i mitt fall kallas Alla Böcker. Klicka på det och det kommer att läggas till din meny.

Om du sedan klickar på det objektet i menyn kan du redigera etiketten. Jag föredrar att inte kalla min ”Alla böcker”, utan bara ”Böcker” istället.

Redigera menyalternativet Böcker
Redigera menyalternativet Böcker

Observera att du bara kan göra detta via Customizer – det är inte möjligt i menyskärmen. Så se till att du använder Customizer för att lägga till ditt eget inläggstyparkiv till din meny.

Anpassa Inläggstyparkivet

WordPress kommer att använda mallhierarkin för att identifiera vilken mallfil i ditt tema som ska användas för att visa det anpassade inläggstyparkivet.

WordPress mallhierarki
WordPress mallhierarki

Om ditt tema har en archive.php-fil, kommer det att använda den, annars kommer det att använda index.php.

Om du vill redigera hur det anpassade inläggstypsarkivet visas kan du skapa en mallfil för ditt anpassade inläggstypsarkiv.

För en specifik anpassad inläggstyp måste du skapa en mallfil som heter archive-$posttype.php, där $posttype är namnet på din inläggstyp. Så för min bok-inläggstyp, skulle jag skapa en fil som heter archive-kinsta_book.php.

Det enklaste sättet att skapa den här filen är genom att göra en kopia av archive.php-filen i ditt tema. Byt namn på den och redigera den så att den visar ditt inläggstyparkiv som du vill ha det.

Visa Enstaka Inlägg

Enstaka inlägg som skapats med en anpassad inläggstyp visas också med den första relevanta mallfilen som finns i mallhierarkin.

Du kan gå lite längre med enstaka inlägg än du kan med arkiv: inte bara kan du skapa en mallfil för inläggstypen (single-$posttype.php), men du kan också skapa en fil för ett visst inlägg av den inläggstypen med hjälp av sluggen för det inlägget (single-$postype-slug.php).

Så om jag lade till Lysande Utsikter på min bokrecensionssajt, kunde jag skapa en fil för alla bokrecensioner som heter single-kinsta_book.php, eller skapa en målfil för den boken som heter single-kinsta_book-lysande-utsikter.php. Om jag inte skapade någon av dessa filer, skulle WordPress som standard använda single.php eller (om detta inte finns) singular.php eller index.php.

Att lägga till egna inläggstyper till Huvudbloggsidan

Som standard kommer din huvudsakliga bloggsida endast att innehålla inläggstypen ”inlägg”. Men vad händer om du också ville inkludera din anpassade inläggstyp på den sidan, blandat med blogginläggen?

Du kan göra detta genom att använda pre_get_posts-kroken i WordPress.

Lägg till detta i pluginet där du registrerade inläggstypen:

<?php
function kinsta_books_on_blog_page() {
 
 if ( $query->is_home() && $query->is_main_query() ) {
  $query->set( ‘post_type', array( ‘post’, ‘kinsta_book’ );
 }

}
add_action( 'pre_get_posts', 'kinsta_books_on_blog_page' ); ?>

Detta kontrollerar att vi är på ”startsidan” (vilket är bloggsidan, även om det inte är förstasidan på din webbplats) och att huvudförfrågningen körs (eftersom du inte vill göra detta i en widget, till exempel). Om så är fallet lägger det till både inlägg och böcker till förfrågningen.

Observera att du måste inkludera inläggstypen ”inlägg” i matrisen samt den nya inläggstypen.

Sammanfattning

Anpassade WordPress-inläggstyper är den funktion som höjer den från en enkel bloggplattform till ett sant innehållshanteringssystem. Det låter dig skapa komplexa, skräddarsydda webbplatser som kan fungera som butiker, referensnav, mediawebbplatser eller vad helst du vill.

Du kan lägga till anpassade inläggstyper till din WordPress-webbplats på ett av tre sätt. Du kan använda ett plugin som WooCommerce som registrerar en anpassad inläggstyp som är relaterad till pluginets funktionalitet. Du kan använda ett plugin som CPT UI eller Pods för att lägga till dina egna inläggstyper. Eller så kan du skriva ditt eget plugin och använda funktionen register_post_type() för att registrera inläggstypen med kod. Oavsett vilken metod du använder, kommer du att kunna få ut mycket mer från din WordPress-webbplats.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.