WordPress custom post types: when and how to use them
Last updated: 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.
Why 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 theme wissel
Als je CPT in functions.php van je theme staat, verdwijnt het bij theme 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.
More information: WordPress.org documentatie
Frequently Asked Questions
How long does it take to implement this?
Implementation time varies per situation. Simple configurations can be done within an hour, more complex setups may take several hours to a day.
What are the costs?
Costs depend on your hosting provider and package. Many basic features are included for free, advanced features may incur additional costs.
Do I need technical knowledge?
You need little technical knowledge for the basics. Most hosting providers offer extensive documentation and support to help you.
Was this article helpful?
Compare hosting packages directly to find the best choice for your situation.
Related articles
What is web hosting? Explanation for beginners
Discover what web hosting is and how it works. Complete explanation about servers, domains and different hosting types for beginners.
What is VPS Hosting?
VPS hosting explained: what is a Virtual Private Server, who is it suitable for and what are the advantages compared to shared hosting?
What is an SSL Certificate?
Everything about SSL certificates: what is SSL, why do you need it and how do you recognize a secure website? Essential for every website.
What is Uptime in Web Hosting?
What does uptime mean in web hosting? Learn about uptime percentages, SLA guarantees and why 99.9% uptime is important for your website.
How much storage do I need for my website?
Discover how much disk space you really need for your website. Practical guide with examples per website type.