WordPress Custom Post Type handleiding

WordPress

In deze korte handleiding worden de benodigde stappen doorlopen om aan de slag te kunnen gaan met Custom Post Types die sinds WordPress 3.0 beschikbaar zijn.

Standaard Types

WordPress komt standaard met een vijftal Post Types:

  • Post (Bericht)
  • Page (Pagina)
  • Attachment (afbeelding, video, document, etc)
  • Revision (concept berichten/pagina’s, en vorige versies)
  • Nav Menu (Menu items)

Deze standaard Post Types kan je al voor veel doeleinden gebruiken. Bijvoorbeeld door berichten te taggen, categoriseren, of een eigen taxonomy mee te geven. ALs je nu echt een eigen Post Type wilt maken, dan komen de Custom Post Types dus van pas.

Custom Post Types

Hierboven hebben we gezien dat er een vijftal standaard Post Types bestaan in WordPress. Die kunnen we zelf gaan uitbreiden met eigen Custom Post Types. Voorbeelden van Custom Post Types zijn bijvoorbeeld:

  • Portfolio items
  • Huizen
  • Films
  • Spellen
  • etc, etc.

Om een Custom Post Type te maken moet je de functie register_post_type gebruiken. Deze functie kan je in een function zetten die je in je functions.php met behulp van een add_action aanroep activeert. Het is ook mogelijk de code in de vorm van een plugin te gebruiken. In een latere blog zal ik uitleggen wat, wanneer de beste keuze is.
register_post_type omvat een behoorlijk aantal parameters, waarvan er hieronder een aantal besproken worden.

Custom Post Type maken – simpel

Om de basis functionaliteit van een nieuwe Custom Post Type te kunnen gebruiken hebben we maar een klein stukje code nodig.

add_action( 'init', 'nostromo_register_post_type_portfolio' );
function nostromo_register_post_type_portfolio() {
/**
* Register some Custom Post Type(s).
*
* @author Marcel Bootsman
* @link http://www.nostromo.nl/wordpress-custom-post-type-handleiding/
*/
   register_post_type('portfolio',
   array(
      'labels' => array(
         'name' => __('Portfolio'),
         'singular_name' => __('Portfolio item')),
      'public' => true,)
   );
}

Met deze code maken we een Custom Post Type ‘portfolio’ aan. Als parameters geven we twee labels mee en geven we aan dat het een publiek Custom Post Type is (zodat deze in het Dashboard is te zien, en op de website te tonen is d.m.v. de Loop.

Custom Post Type maken – uitgebreid

Met bovenstaand voorbeeld hebben we al een volledig functionele Custom Post Type. De register_post_type functie heeft alleen nog veel meer mogelijke argumenten om in te stellen. In onderstaande lijst staan de meest gebruikte argumenten (complete lijst met beschrijving is hier te vinden):

  • labels
  • description
  • public
  • publicly_queryable
  • exclude_from_search
  • show_ui
  • show_in_menu
  • menu_position
  • menu_icon
  • hierarchical
  • supports
  • taxonomies
  • has_archive
  • rewrite
  • query_var
  • can_export

Als we nu al deze argumenten gaan gebruiken krijgen we de volgende code:

add_action( 'init', 'nostromo_register_post_type_portfolio' );
function nostromo_register_post_type_portfolio() {
/**
* Register some Custom Post Type(s).
*
* @author Marcel Bootsman
* @link http://www.nostromo.nl/wordpress-custom-post-type-handleiding/
*/
   register_post_type('portfolio',
   array(
      'labels' => array(
         'name' => __('Portfolio'),
         'singular_name' => __('Portfolio'),
         'add_new' => __('Nieuw portfolio item'),
         'add_new_item' => __('Voeg nieuw portfolio item toe'),
         'edit' => __('Wijzig'),
         'edit_item' => __('Wijzig portfolio item'),
         'new_item' => __('Nieuw portfolio item'),
         'view' => __('Bekijk'),
         'view_item' => __('Bekijk portfolio item'),
         'search_items' => __('Zoek portfolio item'),
         'not_found' => __('Geen portfolio item gevonden' ),
         'not_found_in_trash' => __( 'Geen portfolio item gevonden in prullenbak' ),
         'parent' => __( 'Bovenliggend portfolio item' ),
      ),
      'description' => __('Een portfolio item wordt gebruikt om de portfolio mee te vullen.'),
      'public' => true,
      'publicly_queryable' => true,
      'exclude_from_search' => false,
      'show_ui' => true,
      'show_in_menu' => true,
      'menu_position' => 20,
      'menu_icon' => get_stylesheet_directory_uri() . '/images/cpt_portfolio_icon.png',
      'hierarchical' => false,
      'supports' => array(
         'title',
         'editor',
         'excerpt',
         'custom-fields',
         'comments',
         'thumbnail'),
      'taxonomies' => array( 'post_tag', 'category '),
      'has_archive' => 'true',
      'rewrite' => array(
         'slug' => 'portfolio',
         'with_front' => false ),
      'query_var' => true,
      'can_export' => true,)
   );
}

Een Custom Post Type bekijken

Allemaal leuk en aardig dat we nu ons eigen Custom Post Type hebben opgezet, maar hoe krijg je ze nou te zien op je site? Standaard wordt de single.php gebruikt om een enkel bericht te tonen. Deze wordt ook gebruikt voor de Custom Post Type. Als single.php niet beschikbaar is, dan wordt de index.php gebruikt. Als je zelf een template wilt maken voor je Custom Post Type, dan dien je deze single-custom_post_type_naam.php te noemen. In dit voorbeeld dus single-portfolio.php.

Als je op een pagina meerdere Custom post Types wilt tonen, dan kan je de standaard WordPress loop aanpassen door aan te geven dat je alleen het Custom Post Type wilt tonen.

$portfolio_loop = new WP_Query(array('post_type' => 'portfolio'));

Permalinks

Na het aanmaken van een Custom Post Type is het nodig je permalinks instellingen opnieuw op te slaan. Dit zorgt ervoor dat het Custom Post Type met zijn rewrite slug te benaderen is.

Er is nog veel meer

Deze blog omvat niet alle info die er is te vertellen over Custom Post Types. Mocht je meer willen weten over een specifiek onderdeel, laat het dan weten in de reacties of kom eens langs op het WordPress spreekuur. Meer informatie over Custom Post Types is o.a. hier te vinden:

Gerelateerde artikelen:

  1. Meerdere post thumbnails gebruiken met WordPress
  2. Meer extensies toestaan voor uploaden in WordPress
  3. Class toevoegen aan body in WordPress network
  4. WordPress – Must-use Plugins en Drop-ins
  5. WordPress tip: Verwijder RSS logo in widget
Over Marcel Bootsman

Marcel Bootsman is WordPress specialist. Hij realiseert WordPress websites en begeleidt zijn klanten bij het gebruiken van WordPress door middel van workshops en ondersteuning.

Laat wat van je horen

*