Custom Post Types zijn post types die je zelf aan WordPress toevoegt, maar die niet standaard in WordPress zitten. Soms wordt er door het installeren van een thema automatisch een post type toegevoegd, zoals “Portfolio”. Dit is veelal het geval bij Premium WordPress Themes.
In onze artikelen en op onze pagina's staan affiliate links. Wanneer je via één van deze links een aankoop doet, ontvangen wij een (meestal kleine) commissie van de verkoper. Wij geven altijd onze eerlijke mening over producten. Klik hier voor meer informatie.
De twee post types die het meest worden gebruikt in WordPress zijn Pagina’s en Berichten, die ook standaard in WordPress zitten.
Het doel van custom post types
Inhoud
Wat kun je met custom post types en waarom zou je ze aan WordPress toevoegen? Eigenlijk is het antwoord daarop heel erg simpel. Stel dat je een website hebt waarop je films beoordeelt, dan kun je dat natuurlijk in normale “blogberichten” doen, maar het zou natuurlijk mooier zijn als je een speciaal kopje in WordPress zou hebben dat “Films” heet, waar je vervolgens zelf eigenschappen aan kunt meegeven.
Divi theme & Divi Builder
Bij Elegant Themes ontvang je meer dan
85 premium WordPress themes (waaronder Divi!) voor maar 89 dollar!
Bekijk de themes »»
Lees meer over Divi.
Eigenschappen waar je aan kunt denken zijn de titel van de film, het jaar waarin de film is gemaakt, jouw beoordeling en meer.
Daarnaast zou het natuurlijk prettig zijn om een film in te delen in bepaalde taxonomieën, bijvoorbeeld:
- Genre
- Acteurs
- Regisseur
Dit zorgt ervoor dat je films netjes worden ingedeeld en op je website straks zijn terug te vinden op genre, acteur en regisseur.
Custom post type aan WordPress toevoegen
Je kunt custom post types op meerdere manieren aan WordPress toevoegen. Er zijn plugins die je helpen met het maken van custom post types, maar je kan het beste zelf een plugin maken die de custom post type aanmaakt. Je kunt deze code zowel in het functions.php-bestand van je thema zetten, als in een eigen plugin. Een eigen plugin is meestal beter, omdat je post type dan niet verloren gaat zodra je van thema wisselt.
De plugin maken
Om een plugin aan te maken voor je eigen post type (in dit voorbeeld “films”), maak je eerst een map aan op je computer, genaamd mijn-post-type-plugin (of een andere naam naar keuze).
In deze map zet je een PHP-bestand met de naam mijn-plugin.php. In dat bestand plak je de volgende code:
<?php /* Plugin Name: Mijn Custom Post Type plugin Plugin URI: https://www.wplounge.nl/ Description: Mijn Custom Post Type plugin Version: 1.0 Author: WordPress Lounge Author URI: https://www.wplounge.nl/ */ ?>
Uiteraard kun je de gegevens hierboven aanpassen naar je eigen gegevens (naam, URI, description, version, author en author URI).
Code voor custom post type aan plugin toevoegen
In het PHP-bestand dat we zojuist hebben aangemaakt, gaan we nu de code toevoegen voor onze eigen custom post type (in dit voorbeeld “films”). Voor het gemak heb ik de code die hierboven staat er nog een keer in gezet, je kunt de code hierbeneden dus in één keer kopieren:
<?php /* Plugin Name: WordPress Lounge Showcase Post Type Plugin Plugin URI: https://www.wplounge.nl/ Description: Showcase op wplounge Version: 2014 Author: WordPress Lounge Author URI: https://www.wplounge.nl/ */ // Voegt Films toe als post type function custom_post_type() { $labels = array( 'name' => _x( 'Films', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Film', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Post Type', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), ); $args = array( 'label' => __( 'film', 'text_domain' ), 'description' => __( 'Post Type voor films', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'comments', 'custom-fields', ), 'taxonomies' => array( 'genre', 'acteur', 'regisseur' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'menu_icon' => '', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'film', $args ); } // Hook into the 'init' action add_action( 'init', 'custom_post_type', 0 ); ?>
Zoals je ziet is er ook een lijst met “labels” te zien, zoals “All Items”, “View Item” en “Add New”. Deze kun je uiteraard vertalen naar het Nederlands, mocht je dat willen. Deze labels zijn voor bezoekers niet zichtbaar, maar bepalen hoe het er in de WordPress editor komt uit te zien.
Je post type zichtbaar maken op je website
De bovenstaande code zorgt ervoor dat je post type is aangemaakt en dat je deze kunt gaan gebruiken in WordPress. Aan de voorkant van je website zullen je films er echter nog niet zo uit zien zoals jij dat wilt. Ze gedragen zich hetzelfde als een normaal bericht, en er is een kans dat je taxonomieën (bijvoorbeeld genre, acteurs, regisseurs) nog niet zichtbaar zijn.
Dit kun je oplossen door voor je post type een template aan te maken in je thema.
Hierover volgt binnenkort een artikel op WordPress Lounge! Like ons op Facebook, of volg ons op Twitter en blijf op de hoogte!
Is hier ook al een vervolg op gemaakt?
Ik heb schilderijen op mijn website gezet en wil dit naar eigen hand zetten. Met de boevenstaande advies wil dan de custom post dn gebruiken..
Ik heb WordPress website laten maken bij Webtik.nl en die heeft wel wat custom types voor mij opgezet. Echter ben ik benieuwt of hier een vervolg op komt zodat ik dit zelf leer ipv anderen hiervoor in te huren.
En dan?
Waar plaats je deze code / dit bestand / deze map?
Vervolg is er dus nooit gekomen?
Dag Ruben,
Bedankt voor het melden, we zullen hier binnenkort naar kijken