WordPress custom post types: uitleg en praktische voorbeelden
Laatst bijgewerkt: 31 December 2025
WordPress Custom Post Types: Uitleg en praktische voorbeelden
WordPress wordt vaak gezien als blogplatform, maar het kan veel meer. Custom Post Types (CPT's) transformeren WordPress tot een volledig Content Management Systeem. Met CPT's maak je elk type content: portfolio items, producten, evenementen, teamleden, testimonials en meer. Deze gids legt uit wat CPT's zijn en hoe je ze gebruikt.
Wat zijn Custom Post Types?
In WordPress is een "post type" een categorie content. Standaard heeft WordPress deze post types:
- Posts: Blogberichten, chronologisch geordend
- Pages: Statische pagina's zoals Over Ons of Contact
- Attachments: Media bestanden
- Revisions: Versies van content
- Navigation Menus: Menu items
Custom Post Types zijn door jou gedefinieerde content types. Ze gedragen zich als Posts of Pages, maar met eigen naam en eigenschappen.
Waarom Custom Post Types gebruiken?
Stel je hebt een portfolio. Je zou portfolio items als blogposts kunnen plaatsen, maar dat heeft nadelen:
- Portfolio items mengen met blogberichten
- Categorieƫn en tags zijn gedeeld
- Het archief toont alles door elkaar
- Moeilijk om alleen portfolio te tonen
Met een Custom Post Type "Portfolio":
- Portfolio items staan apart van blogs
- Eigen categorieƫn en tags (taxonomieƫn)
- Eigen archiefpagina op /portfolio/
- Makkelijk te queryen en tonen
Voorbeelden van Custom Post Types
Populaire toepassingen:
Portfolio / Projecten
Voor designers, developers, fotografen. Toon werk met afbeeldingen, klant, datum en projectdetails.
Producten
WooCommerce maakt een "product" CPT. Ook zonder WooCommerce kun je een simpele productcatalogus maken.
Evenementen
Concerten, workshops, webinars. Met datum, locatie, prijs en aanmeldlink.
Testimonials / Reviews
Klantbeoordelingen met naam, foto, bedrijf en citaat.
Teamleden
Medewerkers met foto, functie, bio en contactgegevens.
FAQ's
Veelgestelde vragen georganiseerd per categorie.
Vacatures
Openstaande posities met functie-eisen, locatie en sollicitatielink.
Custom Post Types maken
Er zijn twee methoden: met een plugin of met code.
Methode 1: Plugin (aanbevolen voor beginners)
Custom Post Type UI is de populairste plugin:
- Installeer en activeer Custom Post Type UI
- Ga naar CPT UI > Voeg nieuw toe
- Vul de basis gegevens in:
- Post Type Slug: portfolio (lowercase, geen spaties)
- Meervoud label: Portfolio items
- Enkelvoud label: Portfolio item
- Configureer instellingen:
- Publiek: Ja
- Heeft archief: Ja
- Ondersteunt: Titel, Editor, Thumbnail, etc.
- Klik "Post Type toevoegen"
Je nieuwe post type verschijnt direct in het admin menu.
Methode 2: Code (voor developers)
Voeg toe aan functions.php of een site-specifieke plugin:
function registreer_portfolio_cpt() {
$labels = array(
'name' => 'Portfolio',
'singular_name' => 'Portfolio item',
'menu_name' => 'Portfolio',
'add_new' => 'Nieuw item',
'add_new_item' => 'Nieuw portfolio item',
'edit_item' => 'Bewerk portfolio item',
'view_item' => 'Bekijk portfolio item',
'all_items' => 'Alle items',
'search_items' => 'Zoek items',
'not_found' => 'Geen items gevonden',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'portfolio'),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt'),
'menu_icon' => 'dashicons-portfolio',
'show_in_rest' => true,
);
register_post_type('portfolio', $args);
}
[add_action](/kennisbank/wordpress-hooks-uitleg)('init', 'registreer_portfolio_cpt');
Belangrijke CPT instellingen
public: Maakt het post type zichtbaar in admin en frontend.
has_archive: Creƫert een archiefpagina op /slug/.
rewrite: Bepaalt de URL structuur. array('slug' => 'projecten') geeft URLs als /projecten/project-naam/.
supports: Welke features beschikbaar zijn:
- title: Titel veld
- editor: Content editor
- thumbnail: Uitgelichte afbeelding
- excerpt: Samenvatting
- comments: Reacties
- revisions: Versiegeschiedenis
- custom-fields: Aangepaste velden
menu_icon: Icoon in admin menu. Gebruik Dashicons of een afbeelding URL.
show_in_rest: Nodig voor Gutenberg editor ondersteuning.
Custom Taxonomies toevoegen
Taxonomieƫn zijn categorisatiesystemen. Posts hebben Categories en Tags. Voor CPT's maak je eigen taxonomieƫn.
Met Custom Post Type UI
- Ga naar CPT UI > Voeg taxonomie toe
- Configureer:
- Taxonomie slug: portfolio_categorie
- Labels instellen
- Koppel aan: portfolio
- Hiƫrarchisch: Ja (voor categorieƫn) of Nee (voor tags)
Met code
function registreer_portfolio_taxonomie() {
$labels = array(
'name' => 'Portfolio categorieƫn',
'singular_name' => 'Portfolio categorie',
'search_items' => 'Zoek categorieƫn',
'all_items' => 'Alle categorieƫn',
'edit_item' => 'Bewerk categorie',
'add_new_item' => 'Nieuwe categorie',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'rewrite' => array('slug' => 'portfolio-categorie'),
'show_in_rest' => true,
);
register_taxonomy('portfolio_categorie', 'portfolio', $args);
}
add_action('init', 'registreer_portfolio_taxonomie');
Custom Fields toevoegen
CPT's worden krachtiger met custom fields. Voeg specifieke data toe zoals:
- Klant naam (portfolio)
- Eventdatum (evenement)
- Prijs (product)
- LinkedIn URL (teamlid)
Met Advanced Custom Fields (ACF)
ACF is de populairste plugin voor custom fields:
- Installeer Advanced Custom Fields
- Maak een veldgroep
- Voeg velden toe (tekst, datum, afbeelding, etc.)
- Stel locatieregels in: "Post Type is gelijk aan portfolio"
- Publiceer
Velden verschijnen automatisch bij het bewerken van portfolio items.
Velden tonen in templates
// In single-portfolio.php
$klant = get_field('klant_naam');
$url = get_field('project_url');
if ($klant) {
echo '<p>Klant: ' . esc_html($klant) . '</p>';
}
Templates voor Custom Post Types
WordPress zoekt automatisch naar specifieke templates:
Archiefpagina
archive-{post_type}.php voor het archief. Voor portfolio: archive-portfolio.php
Enkele item pagina
single-{post_type}.php voor individuele items. Voor portfolio: single-portfolio.php
Template hiƫrarchie
Als specifieke templates niet bestaan, valt WordPress terug op:
- archive-portfolio.php / single-portfolio.php
- archive.php / single.php
- index.php
Maak specifieke templates voor optimale controle over de weergave.
CPT's queryen
WP_Query
Haal portfolio items op met WP_Query:
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 6,
'orderby' => 'date',
'order' => 'DESC',
);
$portfolio_query = new WP_Query($args);
if ($portfolio_query->have_posts()) {
while ($portfolio_query->have_posts()) {
$portfolio_query->the_post();
the_title('<h2>', '</h2>');
the_excerpt();
}
wp_reset_postdata();
}
Met taxonomie filter
$args = array(
'post_type' => 'portfolio',
'tax_query' => array(
array(
'taxonomy' => 'portfolio_categorie',
'field' => 'slug',
'terms' => 'webdesign',
),
),
);
CPT's in Gutenberg
Met show_in_rest => true werkt de Gutenberg editor met je CPT. Je kunt ook bepalen welke blokken beschikbaar zijn:
function portfolio_allowed_blocks($allowed_blocks, $post) {
if ($post->post_type === 'portfolio') {
return array(
'core/paragraph',
'core/image',
'core/gallery',
'core/heading',
);
}
return $allowed_blocks;
}
add_filter('allowed_block_types_all', 'portfolio_allowed_blocks', 10, 2);
Veelgemaakte fouten
Permalinks werken niet
Na het registreren van een CPT, flush permalinks:
- Ga naar Instellingen > Permalinks
- Klik "Wijzigingen opslaan" (zonder iets te wijzigen)
Of met code: flush_rewrite_rules() (alleen bij activatie, nooit on init).
CPT verdwijnt na thema wissel
Als je CPT in functions.php van je thema staat, verdwijnt het bij thema wissel. Plaats CPT code in een site-specifieke plugin voor permanente beschikbaarheid.
Gutenberg werkt niet
Vergeten 'show_in_rest' => true toe te voegen. Dit is verplicht voor Gutenberg ondersteuning.
Plugins die CPT's gebruiken
Veel plugins maken automatisch CPT's:
- WooCommerce: product, shop_order, shop_coupon
- The Events Calendar: tribe_events
- Easy Digital Downloads: download
- LearnDash: sfwd-courses, sfwd-lessons
Je kunt deze CPT's uitbreiden met eigen velden en templates.
Meer informatie: WordPress.org documentatie
Veelgestelde vragen
Hoe lang duurt het om dit te implementeren?
De implementatietijd varieert per situatie. Voor eenvoudige configuraties is dit binnen een uur geregeld, complexere setups kunnen enkele uren tot een dag duren.
Wat zijn de kosten?
De kosten zijn afhankelijk van je hosting provider en pakket. Veel basisfuncties zijn gratis inbegrepen, voor geavanceerde functies kunnen extra kosten gelden.
Heb ik technische kennis nodig?
Voor de basis heb je weinig technische kennis nodig. De meeste hosting providers bieden uitgebreide documentatie en support om je te helpen.
Was dit artikel nuttig?
Vergelijk direct hosting pakketten om de beste keuze voor jouw situatie te maken.
Gerelateerde artikelen
Wat is webhosting? Uitleg voor beginners
Ontdek wat webhosting is en hoe het werkt. Complete uitleg over servers, domeinen en verschillende hosting types voor beginners.
Wat is VPS hosting?
VPS hosting uitgelegd: wat is een virtual private server, voor wie is het geschikt en wat zijn de voordelen ten opzichte van shared hosting?
Wat is een SSL-certificaat?
Alles over SSL-certificaten: wat is SSL, waarom heb je het nodig en hoe herken je een beveiligde website? Essentieel voor elke website.
Wat is uptime bij webhosting?
Wat betekent uptime bij webhosting? Leer over uptime percentages, SLA garanties en waarom 99.9% uptime belangrijk is voor je website.
Hoeveel opslag heb ik nodig voor mijn website?
Ontdek hoeveel schijfruimte je echt nodig hebt voor je website. Praktische gids met voorbeelden per websitetype.