WPLounge
Custom Post Types
Home » Tutorials » Custom Post Types aan WordPress toevoegen

Custom Post Types aan WordPress toevoegen

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.

Affiliate disclaimer:
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.

Custom Post Types

Het doel van custom post types

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.

TIP VAN WPLOUNGE
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!

Roger.Overdevest

Roger is een SEO specialist met veel passie voor WordPress

5 reacties