Custom post types in WordPress: wat en wanneer gebruik je ze
Custom post types in WordPress: wat ze zijn, wanneer je ze gebruikt en welke voorbeelden vaak voorkomen op MKB-sites. Praktische uitleg.
Custom post types in WordPress: wat ze zijn, wanneer je ze gebruikt en welke voorbeelden vaak voorkomen op MKB-sites. Praktische uitleg.
WordPress komt out-of-the-box met twee content-types: Posts voor je blog en Pages voor statische pagina’s. Voor de meeste sites is dat genoeg. Maar zodra je content een eigen structuur of behandeling verdient, komt Custom Post Types (CPTs) in beeld. De officiele documentatie staat in de WordPress developer-handboek, en grote sites zoals WooCommerce draaien volledig op CPT’s onder de motorkap. In dit artikel: wat het zijn, wanneer ze zinnig zijn, en hoe je weet wanneer je ze nodig hebt.
Wat custom post types in WordPress zijn
Custom post types zijn extra inhoudstypes naast de standaard “post” en “page”. Voor een MKB-site denk aan portfolio-items, klantreviews, vacatures of evenementen. Elk type krijgt een eigen beheer-omgeving in WordPress en eigen template-bestanden in je thema, zodat de structuur klopt met de bedoeling.
Het probleem dat CPT’s oplossen
Stel je hebt een portfolio van projecten. Elk project heeft een titel, een beschrijving, een klantnaam, een datum, een projecttype en mockups. Je kunt deze als Posts behandelen, maar dan zit het tussen je blogposts en mist het de structuur die portfolio nodig heeft. Of als Pages, maar dan heb je geen logische groepering en geen eigen archief-pagina.
Een Custom Post Type lost dit op door portfolio een eigen content-type te maken, met eigen URL-structuur (/portfolio/projectnaam), eigen velden, eigen archief-pagina (/portfolio/) en eigen template-bestand voor de detail-pagina (single-portfolio.php).
Het resultaat: portfolio is duidelijk gestructureerd, makkelijk te beheren en logisch georganiseerd voor zowel beheerders als bezoekers. Voor wie het in actie wil zien: kijk naar het portfolio hier, dat draait op een CPT met een eigen template en eigen meta-velden.

Wanneer je een CPT gebruikt
Vier vragen die de keuze duidelijk maken:
- Heeft deze content een eigen structuur die afwijkt van blogposts of pages? Bijvoorbeeld: portfolio heeft klant plus datum plus projecttype.
- Wil je een eigen URL-pattern? /portfolio/klantnaam/ in plaats van /klantnaam/
- Wil je deze content kunnen filteren of categoriseren met eigen taxonomieen? Portfolio per type (WordPress, Wix) of per branche (horeca, bouw).
- Heb je veel items van dit type? Drie portfolio-items rechtvaardigt geen CPT. Twintig wel.
Twee of meer ja’s: een CPT is logisch. Een ja: overweeg het. Geen ja: blijf bij Posts of Pages. Een vijfde signaal: heb je een eigen team-pagina of admin-rol nodig die alleen dit type content beheert? Dan is een CPT vrijwel altijd de juiste keuze omdat je dan capability-based toegang kunt regelen via de WordPress-roles-api.
Voorbeelden van CPT’s voor MKB
Portfolio
Het meest gebruikte CPT-voorbeeld. Per project: klantnaam, datum, technologien, beschrijving, mockups, eventueel link naar live site. Met taxonomieen voor type (WordPress, Wix) en branche. Een goed-ingerichte portfolio CPT met filtering geeft bezoekers de kans om gericht door je werk te bladeren, wat conversie verhoogt voor wie zoekt naar iemand met ervaring in hun sector.
Reviews of klantreacties
Per review: klantnaam, foto, bedrijf, datum, recensie, eventueel rating. Bij klantreacties hier draait dit als CPT met Review schema-markup, zodat zoekmachines de structuur begrijpen. Met aggregatie kun je een gemiddelde rating tonen op je homepage.
Team-leden
Voor bedrijven met een team: foto, naam, functie, korte bio, contactgegevens. Aparte structuur die op een team-pagina wordt getoond. Werkt bijzonder sterk in combinatie met Person schema markup, zodat zoekmachines snappen wie er bij je organisatie hoort.
Diensten
Voor bedrijven met meerdere diensten: titel, beschrijving, prijsindicatie, kenmerken, FAQ. Eigen archief-pagina toont alle diensten in overzicht. Een Service-CPT met Service schema markup is ideaal voor lokale SEO en helpt Google te begrijpen wat je precies aanbiedt per locatie.
Cases of case studies
Voor B2B-dienstverleners: probleemstelling, aanpak, resultaat, klant-quote. Verschilt van portfolio (visueel) door focus op verhaal en proces. Vaak gecombineerd met een download-formulier voor de uitgebreide PDF-versie, wat ook werkt als lead-magnet.
Evenementen
Voor sites die events organiseren: datum, locatie, beschrijving, aanmeldknop. Met taxonomie voor type evenement en Event schema markup zodat Google ze in de evenementen-sectie van zoekresultaten kan tonen.
Vacatures
Per vacature: functienaam, locatie, contracttype, beschrijving, aanmeldformulier. Met taxonomie voor afdeling of niveau, plus JobPosting schema markup voor zichtbaarheid in Google for Jobs.
FAQ-items
Een onderschat CPT. Per FAQ: vraag, antwoord, eventueel categorie. Hergebruikbaar op meerdere pagina’s via shortcode of block. Met FAQPage schema markup verschijnen ze als rich snippets in zoekresultaten, wat je organische CTR sterk kan verhogen.

Hoe een CPT wordt gemaakt
Twee technische routes:
Optie 1: via plugin
De plugin “Custom Post Type UI” (gratis) laat je via een GUI custom post types en taxonomieen aanmaken. Geen code nodig. Werkt prima voor wie geen developer is en geen volledig maatwerk hoeft.
Voordelen:
- Geen code-kennis nodig
- Snel op te zetten in 10 tot 15 minuten
- Visueel overzichtelijk
Nadelen:
- Je site is afhankelijk van de plugin (deactiveer hem en CPT’s verdwijnen uit menu)
- Minder controle over geavanceerde opties zoals capabilities en rewrite-rules
- Voor zware sites extra plugin-overhead
Optie 2: via thema-code (functions.php) of eigen plugin
De maatwerk-route. Je registreert het CPT via PHP-code in je thema of in een eigen plugin. Maximale controle, geen plugin-afhankelijkheid.
Voordelen:
- Geen plugin nodig
- Maximale controle over alle opties
- CPT blijft werken bij thema-wissel mits in plugin gezet, of niet als in thema
- Performance-impact is nul, native code
Nadelen:
- Vraagt PHP-kennis
- Bij thema-wissel moet je code mee verhuizen, of in eigen plugin zetten
Voor maatwerk-builds zoals bij een WordPress website laten maken via NixoWebBuilding kies ik standaard voor de eigen-plugin-route. Geen plugin-afhankelijkheid, geen verlies bij thema-wissel.
Een CPT registreren in code: het basisrecept
Voor wie de techniek wil zien: een minimaal CPT registreren is met de WordPress-functie register_post_type() in een paar regels gedaan. Het patroon is altijd hetzelfde:
- Hook op init: via
add_action('init', 'jouw_functie') - Labels-array: menu-naam, singular en plural in het Nederlands
- Args-array: public, has_archive, show_in_rest (true voor Gutenberg-support), supports (title, editor, thumbnail, custom-fields), rewrite met de juiste slug, en eventueel menu_icon en menu_position
- Flush rewrite rules eenmalig na registratie, anders krijg je 404 op de nieuwe URL’s
De hele registratie zit vaak rond de 30 regels code, en kan in een mu-plugin (must-use) of een gewone plugin in /wp-content/plugins/site-cpts/. Voor de bredere structuur van een eigen plugin, lees de officiele WordPress Plugin Handbook. Een mu-plugin laadt automatisch en kan niet per ongeluk uitgezet worden, wat ze ideaal maakt voor site-essentiele CPT’s.
Voor taxonomieen geldt een vergelijkbaar patroon met register_taxonomy(), gehook op init met een prioriteit hoger dan de CPT zelf zodat de relatie goed staat. Maak van portfolio_type bijvoorbeeld een hierarchische taxonomie als categorieen, en van portfolio_tag een platte taxonomie als tags.

Custom velden bij een CPT
Een CPT alleen geeft je een eigen content-type. Wat je vaak ook wilt is custom velden: extra invoer-velden bovenop titel en content. Voor portfolio bijvoorbeeld: klantnaam-veld, datum-veld, type-dropdown.
Drie opties:
- Native WordPress meta fields: via
add_meta_box, vraagt PHP-code maar geen plugin - ACF (Advanced Custom Fields): de populaire plugin, sterke GUI, goed voor wie veel custom velden wil
- Carbon Fields: code-gebaseerd alternatief voor ACF, integreert in code zonder plugin-afhankelijkheid
- Meta Box: sterk alternatief met goede REST API-support
Bij NixoWebBuilding-builds wordt standaard gewerkt met native meta fields voor maatwerk. ACF wordt alleen gebruikt als de klant dat al heeft. Voor de bredere context: een keuze tussen page-builders en Gutenberg vergelijkbare dilemma’s, lees daarvoor tien tips voor je nieuwe site.
Templates voor je CPT
Een goede CPT verdient een eigen template. WordPress kijkt automatisch naar:
single-portfolio.phpvoor de detail-pagina van een portfolio-itemarchive-portfolio.phpvoor het overzicht van alle portfolio-itemstaxonomy-portfolio_type.phpvoor categorieen binnen portfolio
Met deze templates kun je portfolio een totaal andere look geven dan blogposts of pages. Mockup-galerijen, project-meta, gerelateerde projecten, het past allemaal binnen het CPT. De WordPress template-hierarchy is hier de bouwsteen, en een sjabloon-bestand met sprekende naamgeving is altijd te prefereren boven een generieke template met if-statements.
SEO voor CPT’s
Standaard zijn CPT’s net zo SEO-vriendelijk als Posts of Pages. Wat je extra wilt regelen:
- Eigen URL-structuur die zoekwoord-vriendelijk is (/portfolio/projectnaam/)
- CPT in je sitemap opnemen, dat gebeurt automatisch in WP 5.5 en hoger mits public op true
- Eigen schema markup per CPT-type (CreativeWork voor portfolio, Review voor klantreacties)
- Meta-tags op de CPT-template definieren, niet generiek
- Open Graph-tags die kloppen voor het type content, anders ziet je share op LinkedIn er rommelig uit
Voor de bredere SEO-aanpak: praktische SEO-tips voor zzp’ers. Een CPT met goede schema markup kan in Google rich results krijgen, wat je organische CTR merkbaar kan verhogen voor het type pagina dat het ondersteunt.
Veelgemaakte fouten
Fout 1: te veel CPT’s voor te weinig content
Drie portfolio-items rechtvaardigt geen CPT. Vijf vacatures die je nooit invult ook niet. Een CPT is werk in opzet en onderhoud, alleen waardevol bij voldoende volume. Begin met Posts en categorieen, en migreer pas naar CPT als de structuur het echt nodig heeft.
Fout 2: CPT in thema in plaats van plugin
Als je het CPT in functions.php van je thema zet, verdwijnt het bij thema-wissel. Voor permanente CPT’s zet je code in een eigen plugin (Site Plugin) zodat het bij thema-wissel blijft werken. Een mu-plugin is hier de gouden standaard voor site-essentiele content-types.
Fout 3: vergeten URL-pattern goed te zetten
Standaard URL voor portfolio is /portfolio/. Maar als je het niet expliciet zet via de rewrite-arg, krijg je soms /?post_type=portfolio&p=42. Werkt, maar SEO-onvriendelijk en lelijk. Stel altijd een nette permalink-structuur in en flush rewrite rules na registratie.
Fout 4: standaard templates gebruiken zonder maatwerk
Een CPT zonder eigen template valt terug op de generieke single.php of archive.php van je thema. Het portfolio ziet er dan uit als een blogpost. Maak eigen templates om het CPT echt zijn waarde te geven, anders is de helft van de winst weg.
Fout 5: show_in_rest vergeten
Als je de Gutenberg-editor wilt gebruiken voor je CPT, moet show_in_rest op true staan. Vergeet je dat, dan val je terug op de oude classic editor voor dat content-type, wat in 2026 niet meer wenselijk is. Zet daarom standaard show_in_rest aan voor elke nieuwe CPT.
Wanneer een CPT geen oplossing is
- Voor 1 tot 3 stuks content (overdreven)
- Voor content die geen eigen structuur of URL nodig heeft
- Voor content die je via een plugin (zoals WooCommerce voor producten of LearnDash voor cursussen) standaard al krijgt
- Voor temporary content (gebruik Posts met categorie of tag)
- Voor content die alleen jij intern gebruikt en bezoekers nooit zien (gebruik dan een private custom-post-type of liever een tabel in een eigen plugin)
Tot slot
Custom Post Types maken WordPress veel krachtiger en flexibeler. Voor MKB-sites die meer willen dan blog en pagina’s zijn ze de logische volgende stap. Mits gebruikt waar het zin heeft, niet voor elke kleine collectie content. Begin met de vraag wat je content echt is, niet met de techniek.
Niet zeker of jouw site CPT’s nodig heeft? Plan een gratis kennismaking in van een half uur. We bespreken jouw content-structuur en wat het beste past. Voor maatwerk-builds: de groeiwebsite of compleet maatwerk bevat CPT-implementatie standaard waar nodig.
Een CPT is geen technologie-truc, het is structuur die past bij wat je content echt is. Dat maakt het verschil tussen rommelig en georganiseerd.
Een professionele website voor jouw bedrijf?
Bekijk de pakketten of plan een gratis kennismaking. Geen verplichtingen.
Veelgestelde vragen over dit onderwerp
Heb je een vraag na het lezen van dit artikel? Misschien staat het antwoord hier al.
Een eigen type content in WordPress, naast de standaard ‘posts’ en ‘pages’. Je kunt portfolio, reviews, vacatures, cursussen of wat dan ook eigen structuur, eigen URL en eigen velden geven. Voor de bredere context van wat WordPress als platform aankan zie een WordPress website laten maken.
Niet noodzakelijk. Custom post types kun je via een plugin (Custom Post Type UI), via de functions.php van je thema of via een eigen plugin maken. Voor maatwerk-builds liefst hardcoded in een eigen plugin zodat het thema-onafhankelijk blijft. Lees ook wat een WordPress website kost in 2026.
Als je content een eigen structuur, eigen velden of eigen URL-pattern verdient. Portfolio met klantnaam, datum en projecttype is bijvoorbeeld niet logisch onder Posts of Pages. Een goed voorbeeld zie je in de groeiwebsite.
Standaard zijn ze indexeerbaar zoals posts. Je kunt eigen URL-structuren bepalen, eigen schema markup toevoegen en in sitemaps opnemen. Een doordachte CPT-aanpak versterkt SEO juist, omdat je per content-type een eigen template en eigen markup kunt aanbieden. Lees structurele SEO-aanpak voor meer.
Kan later, maar plannen aan de start is verstandiger. Migreren van Posts naar CPT kost werk omdat URL’s veranderen en je 301-redirects nodig hebt om je SEO te behouden. Voor een herontwerp-traject is dit een natuurlijk moment om opnieuw na te denken, zie van Wix naar WordPress migreren.
Portfolio, klantreacties (reviews), team-leden, diensten, cases, vacatures, evenementen. Hangt af van wat je site nodig heeft, voor de meeste MKB zijn 1 tot 3 CPT’s voldoende. Voor inspiratie zie eerder gemaakte projecten die op een Portfolio CPT draaien.
Nee, mits goed geimplementeerd. Sterker, een CPT met eigen template is vaak schoner en sneller dan een Page met veel custom code, omdat je alleen laadt wat dat content-type echt nodig heeft. Voor de bredere performance-aanpak zie waarom goedkope hosting duur uitpakt.
Ja, beide. Voor Gutenberg moet je in de CPT-registratie show_in_rest op true zetten, dan werkt de block-editor automatisch. Page builders zoals Elementor of Bricks ondersteunen CPT’s standaard via hun template-builder. Voor uitleg over die keuze zie tien tips voor je nieuwe site.