Skip to content

Allt om WordPress, webbutveckling — och mer därtill

💡 Hur du skapar en anpassad posttyp i WordPress: kod och plugin

💡 Hur du skapar en anpassad posttyp i WordPress: kod och plugin

Standardinlägg och sidor täcker de flesta behov för en typisk webbplats. Men när en produktkatalog, fastighetsdatabas eller projektportfölj kommer in i bilden räcker dessa två innehållstyper inte längre till. Att blanda produkter med bloggutkast är opraktiskt, och att överbelasta sidor med anpassade fält leder till kaos i adminpanelen.

WordPress löser detta problem genom Custom Post Types, Custom Post Types (CPT). Du skapar en separat sektion i sidofältsmenyn med egna fält, kategorier och visningsmallar. Produkter ligger separat från artiklar. Evenemang blandas inte ihop med sidor. Data stannar där den hör hemma.

Nedan följer två beprövade metoder: via kod med register_post_type() (flexibelt, inga extra tillägg) och via gratistillägget CPT UI (ingen PHP krävs). Båda fungerar på WordPress 6.7+ och har testats på produktionssajter.

💡 Snabb översikt:

  • Registrera en ny innehållstyp via kärnfunktionen register_post_type(), utan tillägg, med full kontroll över parametrar.
  • Kodfritt alternativ: tillägget Custom Post Type UI erbjuder ett visuellt gränssnitt, sänker tröskeln och eliminerar syntaxfel.
  • Efter registrering visas typen i sidofältsmenyn. Finjustering: taxonomier, fält och permalänksspolning.

Vad är en anpassad innehållstyp

Allt innehåll i WordPress är en post med ett post_type-fält i tabellen wp_posts. För blogginlägg är det post. För sidor är det page. För bilagor är det attachment. En anpassad typ lägger till ett annat värde: product för produkter, event för evenemang, portfolio för projekt. Vad som än passar din sajts behov.

Varje CPT får ett eget menyalternativ i adminpanelen, en URL-struktur (/events/webinar-2026/), egna taxonomier och stöd för de redigeringsblock du behöver: utvalda bilder, utdrag, redigerare, kommentarer. Allt detta aktiveras via kryssrutor i arrayen supports, ingen magi inblandad.

Den främsta fördelen är organisation. Produkter flyter inte omkring i bloggflödet. Evenemang behöver inte filtreras bort från en allmän hög. Administrationen går snabbare, och sajtens sökning fungerar mer precist.

Metod 1: registrering via kod, register_post_type()

Grundmetoden som har fungerat sedan WordPress 3.0. Inga tredjepartstillägg behövs. Koden placeras i ditt barntemas functions.php eller, säkrare, via tillägget Code Snippets: ett kodfel kraschar inte sajten utan inaktiverar bara just det snippetet.

Steg 1: funktion på init-kroken

Funktionen hakas in på init. Tidigare fungerar inte eftersom kärnan inte är redo att ta emot registreringar än. Senare innebär att typen inte plockas upp förrän vid nästa förfrågan. Här är en minimal fungerande mall:

1/**
2 * Registers a custom post type 'Books'.
3 * Place in functions.php of the child theme or via Code Snippets.
4 */
5function myprefix_register_book_post_type() {
6 register_post_type( 'book', array(
7 'labels' => array(
8 'name' => 'Books',
9 'singular_name' => 'Book',
10 'add_new_item' => 'Add New Book',
11 'edit_item' => 'Edit Book',
12 'view_item' => 'View Book',
13 'search_items' => 'Search Books',
14 'not_found' => 'No books found',
15 ),
16 'public' => true,
17 'has_archive' => true,
18 'rewrite' => array( 'slug' => 'books' ),
19 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
20 'show_in_rest' => true,
21 'menu_icon' => 'dashicons-book-alt',
22 ) );
23}
24add_action( 'init', 'myprefix_register_book_post_type' );

Efter att koden har infogats visas en "Böcker"-sektion i adminpanelen. Post-URL:er blir site.ru/books/book-name/. Det fungerar omedelbart.

Steg 2: nyckelparametrar

Funktionen tar två argument: en typnyckelsträng (upp till 20 tecken, latinska bokstäver och bindestreck) och en inställningsarray. Här är parametrarna som är värda att konfigurera medvetet:

Parameter

Vad den gör

Rekommendation

public

Synlighet i admin och frontend

true för de flesta fall

has_archive

Arkivsida för alla poster av denna typ

true för kataloger och samlingar

rewrite

URL-struktur (slug)

Sätt explicit, utan specialtecken

supports

Redigeringsblock

Minimum: title editor thumbnail

show_in_rest

Tillgänglighet i blockredigeraren

true är obligatoriskt, annars öppnas inte Gutenberg

menu_icon

Ikon i sidofältsmenyn

Välj från Dashicons

Steg 3: taxonomier

Inläggskategorier och etiketter är inte kopplade till din CPT som standard. Skapa dina egna:

1function myprefix_register_book_taxonomies() {
2 register_taxonomy( 'genre', 'book', array(
3 'label' => 'Genres',
4 'rewrite' => array( 'slug' => 'genre' ),
5 'hierarchical' => true,
6 'show_in_rest' => true,
7 ) );
8
9 register_taxonomy( 'book_tag', 'book', array(
10 'label' => 'Book Tags',
11 'rewrite' => array( 'slug' => 'book-tag' ),
12 'hierarchical' => false,
13 'show_in_rest' => true,
14 ) );
15}
16add_action( 'init', 'myprefix_register_book_taxonomies' );

Taxonomier registreras via register_taxonomy() med en explicit bindning till post_type som den andra parametern. hierarchical => true ger en trädstruktur som kategorier. false ger en platt lista som etiketter.

Steg 4: spola permalänkar

Efter registrering, gå till Inställningar → Permalänkar och klicka på "Spara ändringar", även om du inte har ändrat något. WordPress kommer att bygga om routningsreglerna. Utan detta steg kommer URL:er som /books/ att returnera 404.

När kod räcker

Denna metod fungerar bra för en eller två anpassade typer när strukturen inte ändras ofta. Plus: inga extra tillägg och full kontroll över varje parameter. Minus: för komplexa relationer mellan flera CPT:er och frontend-formulär växer koden snabbt.

Metod 2: utan kod, tillägget Custom Post Type UI

Om du inte vill röra functions.php, installera Custom Post Type UI. Ett gratistillägg från WebDevStudios: en miljon aktiva installationer, 4,6 i betyg på WordPress.org. Uppdaterat i maj 2026, testat upp till WP 7.0.

Gränssnitt för att lägga till en anpassad innehållstyp i tillägget CPT UI

Hur man skapar en CPT via gränssnittet

  • Installera tillägget: Tillägg → Lägg till nytt → "Custom Post Type UI" → Installera → Aktivera.
  • Gå till CPT UI → Add/Edit Post Types.
  • Fyll i fälten: Post Type Slug (latinska bokstäver, till exempel event), Plural Label ("Evenemang"), Singular Label ("Evenemang").
  • I blocket Settings, kryssa i: Public (True), Has Archive (True), Show in REST API (True).
  • I blocket Supports, kryssa i minst: Title, Editor, Thumbnail, Excerpt.
  • Klicka på Add Post Type.

Taxonomier skapas på samma ställe, på fliken Add/Edit Taxonomies. Ange bindningen till din innehållstyp, så visas kategorier i sidofältsmenyn.

Styrkor

Snabb registrering utan risk för syntaxfel: tillägget sätter ihop en korrekt $args-array på egen hand. Fliken Tools möjliggör typmigrering mellan sajter via kodexport och import. CPT UI Pro lägger till block för frontend-utmatning och dra-och-släpp-kolumner i adminpanelen, men gratisversionen täcker registreringsuppgiften fullt ut.

Observera att tillägget endast registrerar typer och taxonomier. För frontend-visning behöver du antingen temamallar, CPT UI Pro eller en kombination med Advanced Custom Fields eller Elementor.

Jämförelse: kod kontra tillägg

Kriterium

Kod (register_post_type)

Tillägg (CPT UI)

Tröskel

Kräver förståelse för PHP-arrayer

Gränssnitt liknar vanliga WP-inställningar

Antal CPT:er

Obegränsat

Obegränsat

Överföring mellan sajter

Kopiera koden

Export/import via Tools

Extra kod på sajten

Ingen

Plus ett tillägg

Tilläggsberoende

Inget

Ja, CPT UI måste vara aktivt

Dokumentation

developer.wordpress.org

docs.pluginize.com

I praktiken används ofta en kombination: registrera typer via CPT UI för snabbhet, och lägg till fält via Advanced Custom Fields. Detta ger dig ett visuellt konfigurationsgränssnitt utan en enda rad PHP.

⁉️🤔 Vanliga frågor

Behöver jag spola permalänkar efter att ha skapat en CPT?

Ja, alltid. Gå till Inställningar → Permalänkar och klicka på "Spara". WordPress kommer att bygga om routningsreglerna. Utan detta kommer nya URL:er som /books/ att returnera 404.

Hur skiljer sig CPT UI från ACF vid typregistrering?

CPT UI registrerar endast innehållstyper och taxonomier. ACF, från och med version 6.1, kan också registrera CPT:er, men dess främsta styrka är anpassade fält. Kombinationen CPT UI + ACF ger dig ett gränssnitt för typer och flexibla fält. Du är inte låst till en enda leverantör.

Kan jag byta namn på en befintlig innehållstyp?

Det finns ingen direkt mekanism. När du ändrar post_type i databasen försvinner gamla poster från adminpanelen. Rätt tillvägagångssätt: skapa en ny typ med önskat namn, migrera poster med en SQL-fråga UPDATE wp_posts SET post_type = 'new_type' WHERE post_type = 'old_type', och ta först därefter bort den gamla registreringen. En fullständig databassäkerhetskopia före migrering är obligatorisk.

Försvinner anpassade typer när man byter tema?

Om typer är registrerade i temats functions.php, ja, när du byter tema försvinner de från adminpanelen. Posterna finns kvar i databasen men blir inte synliga. Registrera CPT:er i ett separat tillägg eller via Code Snippets, så överlever typerna alla temabyten.

Hur visar jag CPT på startsidan i det allmänna flödet?

Lägg till ett filter i Code Snippets: add_filter( 'pre_get_posts', function( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_type', array( 'post', 'book' ) ); } } );. Ersätt med din post_type i arrayen, så visas posterna i flödet tillsammans med vanliga inlägg.

Vilken metod ska man välja: slutlig sammanfattning

Båda metoderna leder till samma resultat: en ny sektion visas i sidofältsmenyn, redo att fyllas med innehåll. Skillnaden ligger bara i verktyget.

Om du arbetar praktiskt med sajten och inte är rädd för functions.php, använd kod. En register_post_type()-funktion, inga extra tillägg. Lämpligt för landningssidor, små kataloger och projekt med utvecklarstöd.

Om du överlämnar sajten till en kund eller bygger ett innehållsprojekt med ett dussin typer, installera CPT UI. Det visuella gränssnittet sänker tröskeln, och konfigurationsexport sparar timmar vid migrering mellan plattformar.

I vilket fall som helst, efter registrering, ställ in visningen: single- och archive-mallar i temat eller visuell layout via CPT UI Pro / Elementor Pro. Utan detta steg förblir innehållet endast i adminpanelen.